2013-04-11 19 views
5

もしここにタプルの私のリストです:合計タプル同じ値

regions = [(23.4, 12, 12341234), 
      (342.23, 19, 12341234), 
      (4312.3, 12, 12551234), 
      (234.2, 12, 12341234)] 

私はインデックス1と2の値が同一であるタプルのリストの最初のインデックス値を合計しようとしています。なお、地域[0]と地域[3]インデックス1で同じ値を持っており、2

私の希望リストは、次のとおりです。

result = [(257.6, 12, 12341234), 
      (342.23, 19, 12341234), 
      (4312.3, 12, 12551234)] 

私はおそらく最初の辞書として保存する必要があることを実感おそらく第2の値を第1のキーとして、第3の値を第2のキーとして使用し、既に存在するかどうかを合計します。より良い、またはより簡単な方法があるかどうか疑問に思う:多分交差関数を使用していると思っている。

+2

結果のタプルの順序は重要ですか? – NPE

+0

@NPEいいえ、それはありません。 – bozdoz

答えて

6
from collections import defaultdict 

sums = defaultdict(float) 
for c, a, b in regions: 
    sums[a, b] += c 
result = [(csum, a, b) for (a, b), csum in sums.iteritems()] 

これを行うための組み込み関数はありません。それはあまりにも専門的な仕事です。

+0

私にそれを打つ - そしてもっと完全に:) –

+1

結果は合計でなければなりません、正しい? – bozdoz

+0

であり、 '.ititit()'は '.items()'よりも優れていますか? – bozdoz

関連する問題