Prüfung auf Gleichheit funktioniert wie folgt für Python dicts fein:Testen Sie, ob dict in dict enthalten
first = {"one":"un", "two":"deux", "three":"trois"}
second = {"one":"un", "two":"deux", "three":"trois"}
print(first == second) # Result: True
Aber jetzt meine zweite dict enthält einige zusätzliche Tasten ich ignorieren wollen:
first = {"one":"un", "two":"deux", "three":"trois"}
second = {"one":"un", "two":"deux", "three":"trois", "foo":"bar"}
Ist Gibt es eine einfache Möglichkeit zu testen, ob das erste Diktat Teil des zweiten Diktats ist, mit all seinen Schlüsseln und Werten?
EDIT 1:
Diese Frage vermutet wird ein Duplikat von How to test if a dictionary contains certain keys zu sein, aber ich habe Interesse an Testschlüssel und ihre Werte. Nur die gleichen Schlüssel zu enthalten, macht nicht zwei dicts gleich.
EDIT 2:
OK, ich habe einige Antworten jetzt vier verschiedene Methoden verwendet, und erwies sich als alle von ihnen arbeiten. Da ich einen schnellen Prozess brauche, habe ich jeden für die Ausführungszeit getestet. Ich erstellte drei identische dicts mit 1000 Elementen, Schlüssel und Werte waren zufällige Strings der Länge 10. Die second
und third
erhielten einige zusätzliche Schlüssel/Wert-Paare, und der letzte Nicht-Extraschlüssel der third
bekam einen neuen Wert. So ist first
eine Teilmenge von second
, aber nicht von third
. Mit Modul timeit
mit 10000 Wiederholungen, ich habe:
Method Time [s]
first.viewitems() <=second.viewitems() 0.9
set(first.items()).issubset(second.items()) 7.3
len(set(first.items()) & set(second.items())) == len(first) 8.5
all(first[key] == second.get(key, sentinel) for key in first) 6.0
Ich vermutete, die letzte Methode ist die langsamste, aber es ist auf Platz 2. Aber Methode 1 schlägt sie alle.
Vielen Dank für Ihre Antworten!
möglich Duplikat von [Wie testen, ob ein Wörterbuch bestimmten Schlüssel enthält] (http://stackoverflow.com/questions/3415347/how-to-test-if-a-dictionary-contains-certain-keys) – tjati