2017-05-10 1 views
0

ich habe:Way Wörterbuch Schlüssel und Werte in Python vergleichen

dictionary1 = {'Zookeeper': 3, 'Profit': 3, 'Collector': 3, 'Service': 3} 

und

dictionary2 = {'Zookeeper': 2, 'Profit': 2} 

Die dictionary2 kann oder nicht von gleicher Länge sein und kann oder auch nicht die gleichen Werte haben wie von dictionary1. Wie schreibe ich eine Python-Funktion, um diese Wörterbücher zu vergleichen und den Schlüssel von dictionary2 zu drucken, die Werte nicht mit dictionary1 übereinstimmen?

kam ich mit diesem nach oben, die nur die Schlüssel übereinstimmt:

check_result = set(dictionary1.keys()) == set(dictionary2.keys()) 

Aber ich brauche etwas präziser.

+0

auf die erste Antwort finden in http://stackoverflow.com/questions/9253493/ comparison-keys-and-values-in-2-dictionaries – Jointts

+0

Ich glaube, ich habe deine Frage schon verstanden, überprüfe die Antwort und verifiziere! und genieße! Prost. –

Antwort

1

Schließlich verstand ich Ihre Frage, das die Arbeit machen sollte:

dictioanry1 = {'Zookeeper': 3, 'Profit': 3, 'Collector': 3, 'Service': 3} 
dictionary2 = {'Zookeeper': 2, 'Profit': 2} 

A = list(dictioanry1.keys()) 
B = list(dictionary2.keys()) 
commonKeys = set(A) - (set(A) - set(B)) 


for key in commonKeys: 
    if(dictioanry1[key] != dictionary2[key]): 
     print (key + ":" + str(dictionary2[key]) + " should be " + str(dictioanry1[key])) 

    $ Profit:2 should be 3 
    $ Zookeeper:2 should be 3 

commonKeys die passenden Schlüssel sind, ok? und A sind die wörterbuch1.schlüssel() (ich habe sie in zwei Variablen, um mehr claire zu sein), also möchte ich alle Werte aus dictionary2 (oder B) drucken, aber das stimmt nicht überein, also fragst du, ob nicht zu gehört die match-list

+0

Damian, danke für die Antwort Ich kann die Schlüssel bekommen, aber ich brauche die Schlüssel und Werte dieser Elemente aus dictionary2, die nicht mit dictionary1 übereinstimmen. Nehmen wir an, Dictionary2 habe 'Zookeeper': 2, 'Profit': 2, aber im Dictionary1 sind diese Werte 'Zookeeper': 3, 'Profit': 3. Also möchte ich drucken wie Zookeeper 2 Punkte hat aber 3 und Profit 2 hat Punkte aber sollte 3 haben – Rob

+0

Perfekt, ich aktualisierte die Antwort für Sie –

+0

Ausgezeichnet. Danke Damian für die Hilfe. Dies gibt das genaue Ergebnis, das ich wollte. – Rob

0

Ich löste ein ähnliches Problem und verwendete eine Lösung, die hier anwendbar sein könnte.

Wenn Sie die Schlüssel von dictionary2 zu drucken, die Werte nicht übereinstimmen mit dictionary1 Sie so etwas wie dieses

>>> dictionary1 = {'Zookeeper': 3, 'Profit': 3, 'Collector': 3, 'Service': 3} 
>>> dictionary2 = {'Zookeeper': 2, 'Profit': 2} 
>>> [ key for key, val in dictionary2.items() if dictionary1.get(key, None) != val ] 
['Zookeeper', 'Profit'] 

versuchen könnte, die nur die Schlüssel von dictionary2 zurückgibt, die Werte nicht mit dictionary1 übereinstimmen als Frage gestellt. Ich fand es vorteilhafter, in meinem Fall, die Schlüssel und die Werte zurück, die als Wörterbuch nicht übereinstimmen:

>>> dictionary1 = {'Zookeeper': 3, 'Profit': 3, 'Collector': 3, 'Service': 3} 
>>> dictionary2 = {'Zookeeper': 2, 'Profit': 2} 
>>> { key: val for key, val in dictionary2.items() if dictionary1.get(key, None) != val } 
{'Zookeeper': 2, 'Profit': 2} 
Verwandte Themen