簡體   English   中英

在Python中,如何對元組中的數字列表,字典中的列表求和?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM