如何在一个字典中比较两个不同的值(数组)?



我想比较字典中的两个值(它们是列表(,如果它们至少有一个公共元素,我将它们的键作为元组。 就我而言,(K1,K2(和(K2,K1(之间没有区别。 我做到了。但问题是我的数据很大,而且这种方式非常慢!

paths = {0:[1,2,3,4],1:[2,5,6],3:[5,8,9],4:[1,3,4]}
edges = []
for k1,v1 in paths.items():
for k2,v2 in paths.items():
if not k1 == k2:
if [value for value in v1 if value in v2] != []:
edges.append((k1,k2))

我的愿望输出:[(0, 1), (0, 4), (1, 3)]

我从代码中获得的输出:[(0, 1), (0, 4), (1, 0), (1, 3), (3, 1), (4, 0)]

使用 itertools.combs,每次比较只以这种方式进行一次:

import itertools
paths = {0:[1,2,3,4],1:[2,5,6],3:[5,8,9],4:[1,3,4]}
edges = []
for ktuple in itertools.combinations(paths,2):
if [value for value in paths[ktuple[0]] if value in paths[ktuple[1]]] != []:
edges.append(ktuple)

相关内容

  • 没有找到相关文章

最新更新