2016-07-13 5 views

Antwort

3

können Sie verwenden, um ein Wörterbuch Verständnis, die Elemente aus einem Wörterbuch, wenn die Schlüssel gibt es in den anderen nimmt, und dann min auf die Werte der beiden gelten:

d = { 'a':3 , 'b':2 , 'c':1 , 'd':5 } 
c = { 'a':2 , 'd':2 ,'e':2 } 
r = {k: min(v, d[k]) for k,v in c.items() if k in d} 
print(r) 
# {'a': 2, 'd': 2} 
+0

Op precised suchte er nach dem 'min()'. – Delgan

+0

'für k, v in c.items()' Ich denke, weil es sonst zu viele Werte zum Auspacken gibt. :) – Delgan

2

dict Verständnis verwenden und setzen Operationen:

{k:min(dict1[k],dict2[k]) for k in dict1.viewkeys() & dict2} 
+0

Sie können 'dict1.viewkeys() & dict2' hier verwenden ... –

+1

@ JonClements oooh, ich habe etwas Neues gelernt, danke! Antwort aktualisiert –

+0

pytonisches Niveau: legendär! –

0
dict1 = {} 
dict1[1]={ 'a':3 , 'b':2 , 'c':1 , 'd':5 } 
dict1[2]={ 'a':2 , 'd':2 ,'e':2 } 

aftermerging = { x:min(dict1[1][x],dict1[2][x]) for x in set(dict1[1]) & set(dict1[2]) } 

print aftermerging 

>> {'a':2 , 'd':2} 
0

Hier ist eine Lösung für Ihre Frage Um zwei d zu fusionieren Wörterbücher in Python mit gemeinsamen Schlüsseln und minimalen Werten.

Ich werde dieses Problem in zwei Teile aufteilen.

1) Finden Sie die gemeinsamen Schlüssel.

2) Verwenden Sie diese gemeinsamen Schlüssel, um den gemeinsamen Schlüsselwert zu finden.

Finden Sie die gemeinsamen Schlüssel

In [1]: dict1 = { 'a':3 , 'b':2 , 'c':1 , 'd':5 } 

In [2]: dict2 = { 'a':2 , 'd':2 ,'e':2 } 
In [3]: common_keys = [key for key in dict1.keys() if key in dict2.keys()] 

In [4]: common_keys 
Out[4]: ['a', 'd'] 

diese gemeinsamen Tasten den gemeinsamen Schlüssel min-Wert zu finden.

In [5]: aftermerging = {} 

In [6]: for i in range(0,len(common_keys)): 
      aftermerging[common_keys[i]] = min(dict1[common_keys[i]],dict2[common_keys[i]]) 

In [7]: aftermerging 
Out[7]: {'a': 2, 'd': 2} 
Verwandte Themen