2016-07-13 117 views
0

我有兩個字典合併兩個字典與公共密鑰蟒和最小值

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

現在我想用公共密鑰和公共密鑰的最小值兩者合併,作爲合併dict1後[1]和dict1 [2]

aftermerging={'a':2 , 'd':2} 

建議我一個有效的方法來做到這一點。

回答

3

您可以使用字典解析如果對方存在的關鍵,從一本詞典需要的物品,然後應用min這兩個值:

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

作業精準的他正在尋找'min()'。 – Delgan

+0

'對於k,v在c.items()'我想,因爲有太多的值來解壓。 :) – Delgan

2

使用字典理解和設置操作:

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

你可以在這裏使用'dict1.viewkeys()&dict2' ... –

+1

@JonClements oooh,我學到了一些新東西,謝謝!答案已更新。 –

+0

pytonic level:傳奇! –

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

這裏是你的問題要合併兩個d的解決方案python中的常用鍵和最小值的字典。

我打算把這個問題分成兩部分。

1)找到共同的密鑰。

2)使用這些公共密鑰來查找公共密鑰最小值。

找到共同鍵

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'] 

使用這些共同鍵查找公共密鑰最小值。

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} 
相關問題