![](/img/trans.png)
[英]Python using combinations to sum values in a tuple in a list in a dictionary?
[英]In Python, how to sum a list of numbers in a tuple, in a list in a dictionary?
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
有什么建議嗎??
>>> 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
。
我認為您要尋找的是這樣的:
for itertools import chain
sum([v for _, v in chain.from_iterable(G.values())])
或懶惰的評價:
sum(v for _, v in chain.from_iterable(G.itervalues()))
我的python生銹了,但實際上
huge = sum([...list...] + 1)
我認為這是在抱怨您要將1加到列表中。 你的意思是:
huge = sum([...list...]) + 1
sum = 0
for key, item in data.iteritems():
for group in item:
sum += group[-1]
應該工作正常。
並非所有內容都必須是列表理解
這可能不是最Python的語言,但是很簡單:
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
我想我們還沒有
sum(group[1] for value in data.itervalues() for group in value)
。
你是說,你只需要在列表g要總結的元組[1]? 如果是這樣,這就是您所追求的:
huge = sum(x for _, x in G[1])
注意:您無需先建立新列表再對其求和; 省略方括號可以一次性完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.