仅在共享密钥上比较词典

2024-10-02 00:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本字典和一些共享键,还有一些不同的。(每本词典都有一些键,而另一本词典中没有)。如果只存在共享密钥,那么比较这两个字典是否相等的好方法是什么?你知道吗

换言之,我想要一个最简单的方法来计算:

commonkeys = set(dict1).intersection(dict2)
simple1 = dict((k, v) for k,v in dict1.items() if k in commonkeys)
simple2 = dict((k, v) for k,v in dict2.items() if k in commonkeys)
return simple1 == simple2

我设法把它简化为:

commonkeys = set(dict1).intersection(dict2)
return all(dict1[key] == dict2[key] for key in commonkeys)

但我希望有一种不需要预先计算公共密钥的方法。(实际上,我有两个字典列表,我将两两比较。每个列表中的所有字典都有相同的键集,因此,如果需要像上面的commonkeys这样的计算,则只需执行一次。)


Tags: 方法keyinforif字典密钥items
2条回答

下面呢?你知道吗

return all(dict2[key] == val for key, val in dict1.iteritems() if key in dict2) 

甚至更短(尽管可能需要更多的比较):

return all(dict2.get(key, val) == val for key, val in dict1.iteritems())

试试这个

dict((k, dict1[k]) for k in dict1.keys() + dict2.keys() if dict1.get(k) == dict2.get(k))

O(m+n)比较。你知道吗

如果你想要一个正确/错误的结果,对上面的结果做一个简单的检查。否则返回true

相关问题 更多 >

    热门问题