huge = sum([x for key in G for (_,x) in G[key]]+1)
这是我到目前为止,虽然它返回一个类型错误,但只能将列表(不是“int”)连接到我不理解的列表。
基本上我处理类似
的数据结构{1: [("A",2), ("B",3)]}
等等,所以字典中的每个键都有一个元组列表的值,而第二个项目,每个元组的index = 1是我想要求和的值,所以在例子中我得到:
huge = 5 # i.e. 2 + 3
有什么建议吗?
答案 0 :(得分: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
。
答案 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()))
答案 2 :(得分:0)
我的python生锈了,但你基本上已经
了huge = sum([...list...] + 1)
我认为你抱怨你在列表中添加1。你的意思是:
huge = sum([...list...]) + 1
答案 3 :(得分:0)
sum = 0
for key, item in data.iteritems():
for group in item:
sum += group[-1]
应该工作得很好。
并非一切都必须是列表理解
答案 4 :(得分:0)
这可能不是最恐怖的,但它是直截了当的:
my_map = {1:[("A",1),("B",2)],2:[("C",3),("D",4)]}
total = 0
for k in my_map.keys():
this_list = my_map[k]
for this_tuple in this_list:
total += this_tuple[1]
print total
答案 5 :(得分:0)
我认为我们还没有
sum(group[1] for value in data.itervalues() for group in value)
答案 6 :(得分:0)
你是说你只想要总结列表G [1]中的元组?如果是这样,那就是你所追求的:
huge = sum(x for _, x in G[1])
注意:在汇总之前,您不需要构建新列表;省略方括号一次性完成。