在Python中,如何对字典中列表里的元组数字求和?
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
错误。