在Python中比较两个字典列表

1 投票
2 回答
5886 浏览
提问于 2025-04-16 06:29

我有两个字典

{key1:[list_of_objects ], {key2:[list_of_objects ]}

例如

dict1 = {key1:['a', 'b', 'c', 'd' ], key2: ['f', 'g', 'h' ] }
dict2 = {key1:['a', 'b', 'c', 'd'],  key2: ['f', 'g', 'h', 'i' ] }

对于dict1和dict2中的每一个键,我想比较列表中的项目。

也就是说,要比较dict1[key1]中的每个值和dict2[key1]中对应的值,依此类推。列表中的项目是对象,所以我会运行类似于

if dict1[key1][0].some_function() = = dict2[key1][0].some_function()
     then condition

那么,进行这个比较的最快方法是什么呢?

2 个回答

0

集合让事情变得简单:

for key in dict1.keys():
    diff = set(dict1[key]).symmetric_difference(dict2[key])
    if diff:
        print "%s: %s" % (key, diff)  # or do whatever
0
for key in dict1.keys():
    for a,b in zip(dict1[key],dict2[key]):
        if a.some_function() == b.some_function():
           #do something

如果你的列表很长,可以用 collections 里的 izip 来替代 zip

撰写回答