Je suis intéressé à comparer deux ensembles dedictionnaires.Je sais que pour faire cela, le dictionnaire doit être rendu hashable probablement en utilisant un frozenset, mais alors qu'est-ce qu'une "manière élégante de faire des comparaisons de clés de dictionnaire hashable?
actual_set = [{
"Cgroups": "rwm",
"PathInContainer": "/dev/xnull",
"PathOnHost": "/dev/null"
}]
d = {
"Cgroups": "rwm",
"PathInContainer": "/dev/xnull",
"PathOnHost": "/dev/null"
}
hashed_devices = frozenset(expected_devices.items())
for key in hashed_devices:
# assert actual_Set == set(hashed_Devices)
Ici, comment puis-je comparer l'ensemble actuel avec les périphériques hachés?
Réponses:
1 pour la réponse № 1Si vous voulez juste savoir si deux dictionnaires sont identiques ou non, ils vous ont donné la meilleure réponse: dict1 == dict2
.
Si vous voulez trouver la différence entre deux dictionnaires, vous pouvez essayer l’opération symmetric_difference () du jeu. Par exemple,
dict1 = {"a":1, "b":2, "c":3}
dict2 = {"b":2, "c":3, "d":4}
set1 = set(dict1.items())
set2 = set(dict2.items())
set1.symmetric_difference(set2)
vous montrera un nouvel ensemble avec des paires (clé, valeur) qui sont soit dans dict1 ou dict2 mais pas les deux, voici set([("a", 1), ("d", 4)])
.
À propos, vous pouvez facilement utiliser dict () pour le convertir en dictionnaire incluant la différence entre dict1 et dict2.