我一直在网上寻找解决方案,但是到目前为止,我所做的一切都没有工作。就像标题所说的,我有一个字典,其中存储了一个值列表。我需要将这些值加在一起。我将如何去做?字典中也有大约1000多个键和值,这只是一个小例子。
{'10_Principles_of_Economics': ['13', '13'],'Advanced_ANOVA': ['2', '1', '1', '2'], 'Advanced_Classical_Mechanics': ['1', '1', '1', '1', '1', '1'], 'Agile_software_development': ['1', '2']}
这是我尝试过的:
def convert_to_dict(matches):
dictionary = dict()
[dictionary[t[0]].append(t[1]) if t[0] in (dictionary.keys())
else dictionary.update({t[0]: [t[1]]}) for t in matches]
print(dictionary)
return dictionary
def sum_dictionary(dictionary):
dd3 = {}
for key in dictionary:
dd3[key] = [sum(dictionary[key])]
我知道这里有问题,但我不确定是什么。任何帮助,将不胜感激。
答案 0 :(得分:1)
这应该做:
dd4 = {k:sum([int(v) for v in val]) for k,val in dd3.items()}
{'10_Principles_of_Economics': 26,
'Advanced_ANOVA': 6,
'Advanced_Classical_Mechanics': 6,
'Agile_software_development': 3}
您的最终功能将如下所示:
def sum_dictionary(dictionary):
return {k:sum([int(v) for v in val]) for k,val in dictionary.items()}
请告诉我您是否不了解。注意在函数定义中使用与变量定义相同的变量。
如果您希望列表中的总和作为字符串(如注释中所述),只需更改此内容即可:
{k:[str(sum([int(v) for v in val]))] for k,val in d.items()}
{'10_Principles_of_Economics': ['26'],
'Advanced_ANOVA': ['6'],
'Advanced_Classical_Mechanics': ['6'],
'Agile_software_development': ['3']}
答案 1 :(得分:0)
像这样的东西
d = {
'10_Principles_of_Economics': ['13', '13'],
'Advanced_ANOVA': ['2', '1', '1', '2'],
'Advanced_Classical_Mechanics': ['1', '1', '1', '1', '1', '1'],
'Agile_software_development': ['1', '2']
}
Python 3.x
for key, value in d.items():
d[key] = [str(sum([int(x) for x in value]))]
print (d)
Python 2.x
for key, value in d.iteritems():