0

識別子ごとに各列の値を計算します。例を参照してください。(説明するのが難しい :( )

そのようです:

tdata = [
    ('column 1', [
        (1, 5), (2, 10), (3, 200)
        ]
    ), 
    ('column 2', [
        (1, 20), (2, 300), (3, 100)
        ]
    ), 
    ('column 3', [
        (1, 2), (2, 300), (3, 2000)
        ]
    )
]

このデータ セットから、内側のタプルの最初の値が一致するタプルのサブ値のみを計算する Pythonic な方法を見つける必要があります。

したがって、Col1 = 5+20+2、Col2 = 10+300+300、Col3 = 200+100+2000 となります。

次のように、非常にコード集約的な方法でこれを実現できます。

col1 = []
col2 = []
col3 = []
data = []
for (column_name, column_values) in tdata:
    for (key, value) in column_values:
        if key == 1:
           col1.append(value)
        elif key == 2:
           col2.append(value)
        elif key == 3:
           col3.append(value)

data = [('Column 1', sum(col1)), ('Column 2', sum(col2)), ('Column 3', sum(col3))]

明らかに、これは大量のコードであり、これを行う最も効率的な方法ではありません。どんな洞察も大歓迎です。

4

1 に答える 1

0

1 つのアプローチを次に示します。

rows = [x[1] for x in tdata]
col1 = sum([x[0][1] for x in rows])
col2 = sum([x[1][1] for x in rows])
col3 = sum([x[2][1] for x in rows])
于 2012-11-29T18:59:32.757 に答える