我有两本字典:
dict_conv
Out[162]:
{'Alanine, aspartate and glutamate metabolism': 4,
'Ascorbate and aldarate metabolism': 4,
'Benzoate degradation': 6,
'Biosynthesis of antibiotics': 16}
dict_org
Out[163]:
{'Amino sugar and nucleotide sugar metabolism': 5,
'Arginine and proline metabolism': 4,
'Biosynthesis of antibiotics': 11,
'Biosynthesis of secondary metabolites': 21}
我想把它们结合起来。 我喜欢这样:
def mergeDict(dict_conv, dict_org):
''' Merge dictionaries and keep values of common keys in list'''
dict3 = {**dict_conv, **dict_org}
for key, value in dict3.items():
if key in dict_conv and key in dict_org:
dict3[key] = [value , dict_conv[key]]
return dict3
dict3 = mergeDict(dict_conv, dict_org)
得到了这条命令:
dict3
Out[164]:
{'Alanine, aspartate and glutamate metabolism': 4,
'Ascorbate and aldarate metabolism': 4,
'Benzoate degradation': 6,
'Biosynthesis of antibiotics': [11, 16],
'Biosynthesis of secondary metabolites': [21, 26]}
我希望每个键都有两个值(在列表中)。 如果键不在其中一个字典中,我希望它写0,如下所示:
dict3
Out[164]:
{'Alanine, aspartate and glutamate metabolism': [4,0],
'Amino sugar and nucleotide sugar metabolism': [0,5],
'Ascorbate and aldarate metabolism': [4,0],
'Benzoate degradation': [6,0],
'Biosynthesis of antibiotics': [11, 16],
'Biosynthesis of secondary metabolites': [0,21]}
(第一个值表示“dict_conv”值,第二个值表示“dict_org”值)
我应该向mergeDict
函数添加什么
谢谢:)
您也可以通过以下方式无条件设置该值:
您只需构建一组所有键,然后使用dicts的
get
方法创建列表,默认值为0:正如@Stephan B所建议的,第一行可以用更短的方式书写:
因为在dict上迭代会在其键上迭代,或者作为:
因为
union
、intersection
等的参数只需要是一个iterable,而不一定是一个set使用您的数据运行示例:
输出:
相关问题 更多 >
编程相关推荐