Python 如何从元组列表中聚合值并将其存储在字典中?

Python 如何从元组列表中聚合值并将其存储在字典中?,python,python-3.x,list,dictionary,tuples,Python,Python 3.x,List,Dictionary,Tuples,输入: 这是我正在寻找的输出: list = [("a",1),("b",2),("c",3),("a",4),("b",5),("c",6)] 反复浏览列表;作为元组,第一个对象[0]是您的字母,第二个对象[1]是数字。它尝试添加数字。如果尚未创建密钥(第一次看到字母),则会创建密钥 d = {"a":5,"b":7,"c":9} 输出: d = {} list = [("a",1),("b",2),("c",3),("a",4),("b",5),("c",6)] for i

输入:

这是我正在寻找的输出:

list = [("a",1),("b",2),("c",3),("a",4),("b",5),("c",6)]

反复浏览列表;作为元组,第一个对象[0]是您的字母,第二个对象[1]是数字。它尝试添加数字。如果尚未创建密钥(第一次看到字母),则会创建密钥

d = {"a":5,"b":7,"c":9}    
输出:

d = {}
list = [("a",1),("b",2),("c",3),("a",4),("b",5),("c",6)]



for i in list:
    try:
        d[i[0]] += i[1]
    except KeyError:
        d[i[0]] = i[1]


print(d)

反复浏览列表;作为元组,第一个对象[0]是您的字母,第二个对象[1]是数字。它尝试添加数字。如果尚未创建密钥(第一次看到字母),则会创建密钥

d = {"a":5,"b":7,"c":9}    
输出:

d = {}
list = [("a",1),("b",2),("c",3),("a",4),("b",5),("c",6)]



for i in list:
    try:
        d[i[0]] += i[1]
    except KeyError:
        d[i[0]] = i[1]


print(d)
您可以使用和循环:

{'a': 5, 'b': 7, 'c': 9}
请注意,不要将变量命名为
列表
,以避免使用相同的名称对变量进行阴影处理。

您可以使用和循环:

{'a': 5, 'b': 7, 'c': 9}

另一方面,不要将变量命名为
列表
,以避免使用相同的名称隐藏变量。

没有依赖项的备选方案

from collections import defaultdict

lst = [('a', 1), ('b', 2), ('c', 3), ('a', 4), ('b', 5), ('c', 6)]
d = defaultdict(int)

for item in lst:
    d[item[0]] += item[1]

print(dict(d))  # {'a': 5, 'b': 7, 'c': 9}

无依赖项的替代方案

from collections import defaultdict

lst = [('a', 1), ('b', 2), ('c', 3), ('a', 4), ('b', 5), ('c', 6)]
d = defaultdict(int)

for item in lst:
    d[item[0]] += item[1]

print(dict(d))  # {'a': 5, 'b': 7, 'c': 9}

相关:记住格式化相关:记住格式化为什么在不使用try和except的情况下尝试时出现密钥错误:“a”,因为
+=
操作需要密钥存在才能将其添加到。
=
可以创建密钥。为什么在不使用try和except的情况下尝试时出现密钥错误:“a”,因为
+=
操作需要密钥存在才能将其添加到。
=
可以创建密钥。问题是否可以使用dict.keys()解决?您的意思是
如果res.keys()中的e[0]:
?问题是否可以使用dict.keys()解决?您的意思是
如果res.keys()中的e[0]: