web-dev-qa-db-fra.com

Python3 Déterminer si deux dictionnaires sont égaux

Cela semble trivial, mais je ne peux pas trouver un moyen intégré ou simple de déterminer si deux dictionnaires sont égaux.

Ce que je veux c'est:

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

Je pourrais faire un court script en boucle, mais je ne peux pas imaginer que le mien soit un cas d'utilisation si unique.

16
Marc Wagner

== travaux

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

J'espère que l'exemple ci-dessus vous aidera.

31
Sharvin Shah

Le bon vieux == l'instruction fonctionne.

7
Constantine32
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}

print(a.items() == b.items())
print(a.items() == c.items())
print(a.items() == d.items())
print(a.items() == e.items())
print(a.items() == f.items())

Production

True
True
False
False
False
0
Srce Cde