test per l'uguaglianza funziona bene come questo per dicts pitone:prova se dict contenute in dict
first = {"one":"un", "two":"deux", "three":"trois"}
second = {"one":"un", "two":"deux", "three":"trois"}
print(first == second) # Result: True
Ma ora il mio secondo dict contiene alcuni tasti aggiuntivi che voglio ignorare:
first = {"one":"un", "two":"deux", "three":"trois"}
second = {"one":"un", "two":"deux", "three":"trois", "foo":"bar"}
Is c'è un modo semplice per verificare se il primo dict fa parte del secondo dict, con tutte le sue chiavi e valori?
EDIT 1:
Questa domanda è sospettato di essere un duplicato di How to test if a dictionary contains certain keys, ma io sono interessato a chiavi di test ei loro valori. Contenere solo le stesse chiavi non equivale a due dadi.
EDIT 2:
OK, ho avuto alcune risposte ora utilizzando quattro diversi metodi, e ha dimostrato tutti loro lavorano. Poiché ho bisogno di un processo veloce, ho testato ciascuno per il tempo di esecuzione. Ho creato tre dit identici con 1000 elementi, le chiavi e i valori erano stringhe casuali di lunghezza 10. Il second
e third
ha ottenuto alcune coppie di valori-chiave in più e l'ultima chiave non aggiuntiva dello third
ha ottenuto un nuovo valore. Quindi, first
è un sottoinsieme di second
, ma non di third
. Utilizzando il modulo timeit
con 10000 ripetizioni, ho ottenuto:
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
ho indovinato l'ultimo metodo è il più lento, ma è sul posto 2. Ma il metodo 1 li batte tutti.
Grazie per le vostre risposte!
possibile duplicato di [Come verificare se un dizionario contiene alcuni tasti] (http://stackoverflow.com/questions/3415347/how-to-test-if-a-dictionary-contains-certain-keys) – tjati