我有两个带有唯一键的大字典,但可能有重叠的值。我想比较每组字典值彼此并找出重叠的数量。我已经完成了这两个for
循环和set
但我想知道是否有一个更快/更优雅的方式来做到这一点。快速比较字典的方法比使用集合
dic1 = {'a': ['1','2','3'], 'b':['4','5','6'], 'c':['7','8','9']}
dic2 = {'d': ['1','8','9'], 'e':['10','11','12'], 'f':['7','8','9']}
final_list=[]
for key1 in dic1:
temp=[]
for key2 in dic2:
test = set(dic1[key1])
query = set(dic2[key2])
x = len(test & query)
temp.append([key2, x])
final_list.append([key1, temp])
最后一行出现错误。你的意思是'final_list.append([key1,temp])'?确实是 – 2011-12-27 22:13:30
。接得好。 – zach 2011-12-27 22:15:54
你真的在比较dic1中的每个键与dic2中的每个键吗?这就是他们所说的** O ** n^2。这本质上很慢。 – 2011-12-27 22:30:12