Python permet dictionnaires à comparer avec ==
Utilisation de la `` == opérateur dictionnaires circulairement définis
import copy
child = {'name': 'child'}
parent_1 = {'name': 'parent', 'child': child}
parent_2 = copy.deepcopy(parent_1)
print(parent_1 == parent_2)
Prints True
, comme vous attendez. Python permet également aux dictionnaires de se référer les uns aux autres circulairement.
child = {'name': 'child'}
parent_1 = {'name': 'parent', 'child': child}
child['parent'] = parent_1 # Create the circular reference
Cependant, en essayant d'utiliser l'opérateur ==
sur les dictionnaires de références circulaires soulève une erreur.
parent_2 = copy.deepcopy(parent_1)
print(parent_1 == parent_2)
Retours
C:\Python34\python.exe -i C:/Users/anon/.PyCharm40/config/scratches/scratch_5
Traceback (most recent call last):
File "C:/Users/anon/.PyCharm40/config/scratches/scratch_5", line 11, in <module>
print(parent_1 == parent_2)
RuntimeError: maximum recursion depth exceeded in comparison
Comment puis-je vérifier deux dictionnaires avec des références circulaires pour l'égalité?
Je soupçonne que les dictionnaires sont simplement la comparaison de chaque paire clé/valeur et appelant la méthode d'égalité récursive sur les dictionnaires qu'ils trouvent, ce qui crée une boucle infinie. – MackM
Cela fonctionne très bien pour moi. –
@MorganThrapp Merci de l'avoir testé. Quelle version de Python utilisez-vous? Je reçois toujours l'erreur avec le code ci-dessus. – MackM