0

[yyy,m,value] のリストが与えられた場合、1 年に対応するすべての値を追加する必要があります。となることによって、

A = [
[['2008', '3', '5'],['2008', '4', '35'],['2013', '3', '71']],
[['2008', '6', '2'],['2008', '7', '2'],['2008', '8', '4'],['2013', '3', '128']]
]

になる

A = [
[['2008', '40'],['2013','71']],
[['2008', '8'],['2013','128']]
]

可能な最善の方法は何ですか?ありがとう。

4

3 に答える 3

0

明示的で、次のような単純なループを使用できます。

A = [[['2008', '3', '5'],['2008', '4', '35'],['2013', '3', '71']],
[['2008', '6', '2'],['2008', '7', '2'],['2008', '8', '4'],['2013', '3', '128']]    ]

l,B,k=[],[],0

for x in A:
    for y in x:
        l.append(y[0])
    for z in set(l):
        for y in x:
             if y[0] == z:
                k += int(y[2])
        B.append([z,k])
        k=0
print B

これにより、次のことが期待されます。

>>>B
[['2008', 40], ['2013', 71], ['2008', 8], ['2013', 128]]
于 2013-08-12T23:39:03.587 に答える
0

これは機能します:

for i,li in enumerate(A):
    d={}
    for sli in li:
        year=sli[0]
        d.setdefault(year,0)
        d[year]+=int(sli[-1])

    A[i]=[[k,str(d[k])] for k in sorted(d.keys())]

A の値はその場で置き換えられます。

>>> A
[[['2008', '40'], ['2013', '71']], [['2008', '8'], ['2013', '128']]]
于 2013-08-13T00:15:09.757 に答える