Python3 判断两个字典是否相等 [duplicate]

Python3 Determine if two dictionaries are equal [duplicate]

提问人:Marc Wagner 提问时间:11/17/2018 最后编辑:Bernd WechnerMarc Wagner 更新时间:3/17/2020 访问量:175708

问:

这似乎微不足道,但我找不到一种内置的或简单的方法来确定两个词典是否相等。

我想要的是:

a = {'foo': 1, 'bar': 2}
b = {'foo': 1, 'bar': 2}
c = {'bar': 2, 'foo': 1}
d = {'foo': 2, 'bar': 1}
e = {'foo': 1, 'bar': 2, 'baz':3}
f = {'foo': 1}

equal(a, b)   # True 
equal(a, c)   # True  - order does not matter
equal(a, d)   # False - values do not match
equal(a, e)   # False - e has additional elements
equal(a, f)   # False - a has additional elements

我可以制作一个简短的循环脚本,但我无法想象我的脚本是一个如此独特的用例。

python-3.x 字典 相等

评论

0赞 jammertheprogrammer 9/4/2023
为什么这被标记为重复,然后链接到另一个问题,其答案没有回答这个问题?

答:

76赞 Christian Callau 11/17/2018 #1

古老的声明是有效的。==

评论

8赞 rbaleksandar 11/17/2018
==工程。然而,对于大型词典,我会首先进行一个简单的检查,即比较键的数量。毕竟,如果一个字典有 2 个键,而另一个字典有 10 个键,则无需更深入地比较值。
54赞 Christian Callau 11/17/2018
这是一种很好的思维方式,但不是必需的。 在两个词典之间进行了很好的优化,并考虑了您提到的因素。==
4赞 Scott Driggers 6/22/2021
为了跟进 @Constantine32 的答案,这里是 dict 的 Cython 实现,它完全按照他所说的去做。hg.python.org/cpython/file/6f535c725b27/Objects/......==
229赞 Sharvin26 11/17/2018 #2

==工程

a = dict(one=1, two=2, three=3)
b = {'one': 1, 'two': 2, 'three': 3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three': 3, 'one': 1, 'two': 2})
a == b == c == d == e
True

我希望上面的例子对你有所帮助。

评论

8赞 Neil 4/11/2021
不适用于嵌套词典
11赞 bappak 6/24/2021
适用于嵌套字典,我用 python3.8 进行了测试。
2赞 alper 11/22/2021
如果我们与以下产品进行比较,则不起作用ordereddictdict
1赞 luca.giovagnoli 1/21/2022
但是呢:In [1]: x = {"key": True} In [2]: y = {"key": 1} In [3]: x==y Out[3]: True
0赞 bVector 11/30/2023
>>> 1 == True True@luca.乔瓦尼奥利