2016-07-13 72 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} 
相关问题