将存储在字典中的值添加为值列表

时间:2020-03-18 18:58:13

标签: python list dictionary

我一直在网上寻找解决方案,但是到目前为止,我所做的一切都没有工作。就像标题所说的,我有一个字典,其中存储了一个值列表。我需要将这些值加在一起。我将如何去做?字典中也有大约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])]

我知道这里有问题,但我不确定是什么。任何帮助,将不胜感激。

2 个答案:

答案 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()}

输出2:

{'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():
相关问题