在Python中,如何对字典中列表里的元组数字求和?

2 投票
7 回答
6851 浏览
提问于 2025-04-17 13:04
huge =  sum([x for key in G for (_,x) in G[key]]+1)

这是我目前的代码,但它返回了一个类型错误,提示只能把列表(而不是“整数”)连接到列表上,我不太明白这个意思。

基本上,我正在处理一种数据结构,类似于

{1: [("A",2), ("B",3)]}

这样,每个字典中的键都有一个值,这个值是一个元组的列表,而每个元组的第二个项目(索引为1)是我想要相加的值,所以在我给出的例子中:

huge = 5   # i.e. 2 + 3

有没有什么建议??

7 个回答

0

你是在说你想把列表 G[1] 中的元组加起来吗?如果是这样的话,下面这个就是你想要的:

huge = sum(x for _, x in G[1])

注意:在加总之前,你不需要先创建一个新的列表;省略方括号就可以一次性完成这个操作。

1

我觉得你想要的东西大概是这样的:

for itertools import chain
sum([v for _, v in chain.from_iterable(G.values())])

或者用懒惰求值的方法:

sum(v for _, v in chain.from_iterable(G.itervalues()))
5
>>> G = {1:[("A",2),("B",3)]}
>>> sum(y for v in G.itervalues() for (x, y) in v)
5

这个错误来自于这个表达式 [x for key in G for (_,x) in G[key]] + 1,它试图把一个列表和一个数字相加。这就导致了一个 TypeError 错误。

撰写回答