2017-04-13 4 views
1

私の辞書には、各エントリにタプルのリストがあります(私のpython文法は間違っているかもしれません、私に負担してください)。私はPythongは辞書のリストのタプルで値を合計しますか?

result = sum(y for v in dict.itervalues() for (x, y) in v)の異なる形式を使用している

{1: (10), 2: (5)...} 

:私はすなわち、各エントリのためのタプルに第2の値を合計したい

{1: [(2, 2), (4, 3), (6, 1), (7, 1), (8, 3)], 2: [(4, 1), (5, 3), (1, 2)],...} 

:それは次のようになります

しかし、両方のエントリのすべての値が加算されます。

+5

'{K:dict.itemsでK、V(のための和(V IN _、xのx))を}' – vaultah

+1

値の括弧はタプルにはなりません。 '{1:10、2:5 ...} ' –

+1

@vaulth nice answer! – Haranadh

答えて

1

あなたはこのような何かを行うことができます。

編集:@のvaultahさんのコメントに感謝します。

a = {1: [(2, 2), (4, 3), (6, 1), (7, 1), (8, 3)], 2: [(4, 1), (5, 3), (1, 2)]} 
final = {k:(sum(j for _,j in v),) for k,v in a.items()} 
print(final) 

Output: 

>>> {1: (10,), 2: (6,)} 
+1

OPがタプルに合計を保持したいと仮定しても、 'tuple'コンストラクタを呼び出す価値はありません。 '(sum(j for _、j in v)、')も同様に動作します。 – vaultah

+0

ああああ!私はタプル内でこのようなことをすることができるのか分からなかった!素晴らしいコメント!ありがとう。私は私の答えを編集します。 –

0
sum = 0 
for item in dict: 
    for _,x in dict[item]: 
     sum = sum + x 
    print sum 
0

map/lambdaを使用してそれを解決する別の方法:

result = {k: sum(map(lambda x: x[1], v)) for k, v in dict.items()} 
関連する問題