Python-Skript zum Vergleichen der Schlüssel von 2 Wörterbüchern und bei gleichem Druckwert des Schlüssels des 2. Wörterbuchs

16152
user999

Ich habe zum Beispiel 2 Wörterbücher:

dict =  dict1=  

Ich muss die Schlüssel von 2 Wörterbüchern vergleichen und wenn sie gleich sind, muss ich den entsprechenden Wert des Schlüssels des 2. Wörterbuchs drucken. Zum Beispiel haben beide Wörterbücher 1 und 3 als Schlüssel, so dass ich ihren entsprechenden Wert im 2. Wörterbuch ausdrucken muss, dh es sollte yund drucken u. Wie schreibe ich das Python-Skript dafür? Ich habe so etwas ausprobiert:

def compare(dictOne,dictTwo): for keyOne in dictOne: for keyTwo in dictTwo: if keyOne == keyTwo: print(dictTwo[keyTwo]) 

Aber ich bekomme die Ausgabe nicht.

0

3 Antworten auf die Frage

1
Charles Addis

Dies wäre besser für StackOverflow.

Hier ist der pythonischste Weg, dies zu tun:

d1 = {'a': 10, 'b': 20, 'c': 30, 'd': 40} d2 = {'z': 260, 'd': -12, 'r': 1, 'b': 0}  # Use a dictionary comprehension to collect d2 values of shared key d3 =  

Dieser Python-Code verwendet ein Wörterbuchverständnis, um durch d1die Schlüssel zu iterieren und, wenn der Schlüssel in beiden ist, d1und d2den Schlüssel d3mit dem Wert von in zu speichern d2.

Hier ist das Ergebnis im Python-Interpreter:

>>> d1 = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> d2 = {'z': 260, 'd': -12, 'r': 1, 'b': 0} >>> d3 =  >>> d3 {'d': -12, 'b': 0} 

Hinweis: Sie müssen nicht anrufen d1.keys(), aber es ist eine gute Praxis. Ich habe absichtlich nicht angerufen .keys().

0
JeHor

Ich habe Ihren Code richtig formatiert und getestet und es hat für mich funktioniert. Ich bin nicht sicher, warum Sie keine Ausgabe gesehen haben.

def compare(dictOne,dictTwo): for keyOne in dictOne: for keyTwo in dictTwo: if keyOne == keyTwo: print(dictTwo[keyTwo])  dict1 =  dict2=  compare(dict1,dict2) 

Obwohl es nicht der effizienteste Code ist, funktioniert es.

Für etwas effizienteres würde ich den gleichen Code vorschlagen, der von grawity bereitgestellt wurde:

def compare2(dictOne,dictTwo): for key in dictOne: if key in dictTwo: print(dictTwo[key]) 
-1
grawity
for key in dictTwo: if key in dictOne: print(key, "=", dictTwo[key]) 
Obwohl dies die Frage beantworten kann, wäre es eine bessere Antwort, wenn Sie eine Erklärung liefern könnten, warum dies so ist. DavidPostill vor 8 Jahren 1