我想比较两本字典。我的方法是将它们转换成两个单独的元组列表,然后使用set模块。下面是一个例子:
dict = {'red':[1,2,3],'blue':[2,3,4],'green':[3,4,5]}
dict1 = {'green':[3,4,5],'yellow':[2,3,4],'red':[5,2,6]}
intersection = set(set(dict.items()) & set(dict1.items()))
显然,这是在比较两个元组列表,而python不喜欢这样。我得到一个TypeError:“list”是不可更改的错误(或类似的措辞)。
我希望交集包含
[('green',[3,4,5])]
。有什么想法吗? 最佳答案
shared_keyvals = dict( (key, dict1[key])
for key in (set(dict1) & set(dict2))
if dict1[key] == dict2[key]
)
你甚至可以把它变成一个函数:
def shared_keyvals(dict1, dict2):
return dict( (key, dict1[key])
for key in (set(dict1) & set(dict2))
if dict1[key] == dict2[key]
)
显然,如果您不希望输出为dictionary形式,您可以删除
dict()
调用并替换为列表理解括号([]
)。关于python - 比较两个字典与列表类型的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5062166/