2012-02-15 9 views
2
huge = sum([x for key in G for (_,x) in G[key]]+1) 

これは私がこれまで行ってきたことですが、タイプエラーが返されても、リスト(「int」ではなく)を連結して、わからないものだけを連結することができます。Pythonでは、タプル内の数字のリストを辞書のリストで合計する方法は?

辞書内のすべてのキーはタプルのリストである値、および2番目の項目、インデックス=持つように基本的にImは、データ構造と

{1: [("A",2), ("B",3)]} 

のようなものを扱うというようにそのような1つのタプルの合計は、私が合計したい値なので、私が与えた例では:

huge = 5 # i.e. 2 + 3 

+1

入力を提供するコード行を追加することをお勧めします。 – YXD

+2

いいですね、ちょうど '+ 1'を削除してください。代わりに、 'sum(vのlに対してG.itervalues()のlのためのv [1])'。 –

答えて

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です。

0

私のPythonのさびが、あなたは、本質的に

huge = sum([...list...] + 1) 

を持っている私はあなたがリストに1を追加していることを訴えていると思います。もしかして:

huge = sum([...list...]) + 1 
0
sum = 0 
for key, item in data.iteritems(): 
    for group in item: 
     sum += group[-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())) 
0

この5月最も平凡ではありませんが、それはまっすぐです:

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 
+0

不幸な変数名の選択、ISTM。これは、map、list、tupleの3つの組み込み関数をクローバーします。 – DSM

+0

良い点。私は編集しました。新しい名前は素晴らしいものではありませんが、IMOの例に役立ちます。 –

0

私たちはまだ

sum(group[1] for value in data.itervalues() for group in value) 

を持っていなかったと思います。

0

はリストG {1}のタプルを要約したいですか?

huge = sum(x for _, x in G[1]) 

注:もしそうなら、これはあなたが後にしたものですあなたはそれを合計する前に、新しいリストを作成する必要はありません。角括弧を外して1回のパスでそれを行います。

関連する問題