56 votes

Python3 Déterminer si deux dictionnaires sont égaux

Cela semble trivial, mais je ne trouve pas de méthode intégrée ou simple pour 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 aussi unique.

114voto

Sharvin26 Points 1605

== 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.

0 votes

Ne fonctionne pas pour les dictionnaires imbriqués

34voto

Constantine32 Points 551

Le bon vieux == La déclaration fonctionne.

3 votes

== travaux. Pour les grands dictionnaires, je ferais cependant d'abord une vérification triviale, qui consiste à comparer le nombre de clés. Après tout, il n'est pas nécessaire d'aller plus loin dans la comparaison des valeurs si un dictionnaire a 2 clés et l'autre 10.

27 votes

C'est une bonne façon de penser, mais ce n'est pas nécessaire. == entre deux dictionnaires est très bien optimisé et prend en compte des facteurs comme celui que vous avez mentionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X