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

Python 添加存储在字典中的值作为值列表,python,list,dictionary,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'], '

我一直在网上寻找解决方案,但到目前为止我所做的一切都不起作用。正如标题所说,我有一本字典,里面存储着一系列的值。我需要把这些值加在一起。我该怎么做呢?字典中也有大约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])]
我知道这里有点不对劲,但我不完全确定是什么。任何帮助都将不胜感激

这应该可以:

dd4 = {k:sum([int(v) for v in val]) for k,val in dd3.items()}
输出: 您的最终函数如下所示:

def sum_dictionary(dictionary):
    return {k:sum([int(v) for v in val]) for k,val in dictionary.items()}
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']
}
如果你有什么不明白的,请告诉我。请注意在函数定义中使用与其内部相同的变量

如果希望列表中的总和为字符串(如注释中所述),只需更改以下内容:

 {k:[str(sum([int(v) for v in val]))] for k,val in d.items()}
产出2: 像这样的事情:

def sum_dictionary(dictionary):
    return {k:sum([int(v) for v in val]) for k,val in dictionary.items()}
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']
}
Python3.x

for key, value in d.items():
    d[key] = [str(sum([int(x) for x in value]))]

print (d)
for key, value in d.iteritems():
python2.x

for key, value in d.items():
    d[key] = [str(sum([int(x) for x in value]))]

print (d)
for key, value in d.iteritems():

你的预期产出是什么样的?就像这样:{'10_经济学原理】:['26'],'Advanced_ANOVA':['6'],'Advanced_Classic_Mechanism':['6'],'Agile_software_development':['3']}只是将这些值相加。要么返回
dd3
,要么就地执行操作。你当前的产出是什么样的?只是出了差错吗?而且,看起来您没有在字符串和整数之间进行转换。这可能是您的问题吗?示例中的代码给出了:错误:不支持+:'int'和'str'的操作数类型。它不会将这些值相加。我想要的输出是您列出的第一个输出。我仍然有一个问题,它只显示单独的值。也许这就是我放代码的地方。你能把这个:dd4={k:sum([int(v)for v in val])for k,val in dd3.items()}放在for循环下吗?它不在循环下,它替换了循环。在这里,我使用列表理解和听写理解,这是避免循环的两种方法(如果可以,请始终避免它们)。我编辑了我的答案,以便您可以将其用作函数。然后你只需调用
sum\u字典(dd3)