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]:
?