比较没有匹配键的两个词典之间的列表值

时间:2016-06-28 04:49:56

标签: python list dictionary compare

我有两个字典,它们的键不匹配,但值会。每个字典中的所有值都包含3个列表项作为整数。

dict1 = {'red':[1,2,3],'blue':[2,3,4],'orange':[3,4,5]}

dict2 = {'green':[3,4,5],'yellow':[2,3,4],'red':[5,2,6]}

我想比较每个列表并找到哪两个键具有匹配的值列表。在这种情况下,“蓝色”和“黄色”匹配,以及“绿色”和“橙色”。

我看了一下这个帖子但是无法让它工作,我不确定我是在问同样的事情:comparing two dictionaries with list type values

我之前没有使用过词典,也不确定我是否理解列表推导。 (许多帖子似乎都使用它们)

3 个答案:

答案 0 :(得分:1)

您可以使用列表理解(这只是" for循环&#34的快捷方式):

matching = [(k1, k2) for k1 in dict1 for k2 in dict2 if dict1[k1] == dict2[k2]]
print matching
# [('blue', 'yellow'), ('orange', 'green')]

答案 1 :(得分:1)

保持简单明了:

dict1 = {'red':[1,2,3],'blue':[2,3,4],'orange':[3,4,5]}

dict2 = {'green':[3,4,5],'yellow':[2,3,4],'red':[5,2,6]}

matches = []
for key1 in dict1:
    for key2 in dict2:
        if dict1[key1] == dict2[key2]:
            matches.append((key1, key2))

print(matches)

输出:

[('blue', 'yellow'), ('orange', 'green')]

答案 2 :(得分:-1)

对于任何情况,如果你不理解朱利安的回答,这也是做同样的事情。

dict1 = {'red':[1,2,3],'blue':[2,3,4],'orange':[3,4,5]}

dict2 = {'green':[3,4,5],'yellow':[2,3,4],'red':[5,2,6]}

for k1,v1 in dict1.items(): #each key and value in dict1
    for k2,v2 in dict2.items(): #each key and value in dict2
        if v1 == v2: #if values match
            print (k1,k2) #print their keys