比较python中特定键值对的不同dicts?

时间:2015-10-23 17:24:49

标签: python dictionary comparison

我需要在python中比较多个词典中的键和值。发布了类似的问题,但针对我的具体问题,他们还不够。我收到的语法错误似乎无法理解。

我的代码试图在五种不同的dicts之间比较dict键和值。我需要返回它们之间100%相同的那些并​​将它们添加到一个普通的' dict,comm_one

comm_one = {}
for k, v in dot_105.items():
    if k, v in dot_110.items() and k, v in dot_81.items() and k, v in dot_82.items() and k, v in dot_100.items():
        comm_one[k] = v

    elif k, v not in dot_110.items() and k, v not in dot_81.items() and k, v not in dot_82.items() and k, v not in dot_100.items():
        print(k, v,' is only in dot_105.')

在所有dicts中循环显示所有值的正确语法是什么?如果有一个问题可以解答我可能错过的问题,我会很感激它的链接。提前谢谢。

2 个答案:

答案 0 :(得分:3)

comm_one = {}

for key,value in dot_105.items():
    containing = [key in d and d[key]==value for d in (dot_110, dot_81, dot_82, dot_100)]
    if all(containing):
        comm_one[key] = value
    elif not any(containing):
        print(key, value,' is only in dot_105.')

答案 1 :(得分:1)

还有一个建议,如何使用Set Data结构返回相交的数据

从Python 2.6版开始,你可以使用多个参数来设置set.intersection(),比如

https://docs.python.org/2/library/stdtypes.html#set

intersected_data = set.intersection(dot_105.iteritems(),dot_110.iteritems() ,dot_81.iteritems(), dot_82.iteritems(), dot_100.iteritems()