将python中的两个字典与公共键和最小值合并

时间:2016-07-13 08:19:48

标签: python python-2.7 dictionary

我有两本词典

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}

建议我这样做的有效方法。

4 个答案:

答案 0 :(得分: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}

答案 1 :(得分:2)

使用dict理解和设置操作:

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

答案 2 :(得分: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}

答案 3 :(得分:0)

以下是您的问题的解决方案将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}