我有两本词典
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}
建议我这样做的有效方法。
答案 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}