J'ai deux dictionnaires, mais pour simplifier, je vais prendre ces deux-là :
>>> x = dict(a=1, b=2)
>>> y = dict(a=2, b=2)
Maintenant, je veux comparer si chaque key, value
paire dans x
a la même valeur correspondante dans y
. Alors j'ai écrit ceci :
>>> for x_values, y_values in zip(x.iteritems(), y.iteritems()):
if x_values == y_values:
print 'Ok', x_values, y_values
else:
print 'Not', x_values, y_values
Et cela fonctionne depuis un tuple
est retourné et ensuite comparé pour l'égalité.
Mes questions :
Est-ce correct ? Y a-t-il un meilleur manière de faire ça ? Mieux vaut ne pas parler de vitesse, je parle de l'élégance du code.
UPDATE : J'ai oublié de mentionner que je dois vérifier combien de key, value
sont égales.
29 votes
x == y
devrait être vrai selon stackoverflow.com/a/5635309/1862021 votes
X == y devrait être vrai. On peut vérifier rapidement dans REPL. Veuillez vous référer : docs.python.org/2/library/stdtypes.html#mapping-types-dict
1 votes
x == y
devrait être vrai selon le documentation officielle : " Les dictionnaires se comparent de manière égale si et seulement s'ils ont les mêmes paires (clé, valeur) (indépendamment de l'ordre). Les comparaisons dans l'ordre ('<', '<=', '>=', '>') génèrent une TypeError."