2

そのようなオブジェクトを繰り返し処理し、リストのリストを作成しています。

このようなもの:

#data.py
values = []
for o in objects:
    data = [o.day, o.seconds]
    values.append(data)

たとえば、次のようになります。

[['27/2', 34], ['23/2', 21], ['25/2', 11], ['27/2', 38]]

しかし、私は追加の操作を行う必要があります。がすでに値に含まれている場合data[0] (day)、データを追加したくありません。data[1]既存のオブジェクトのdata[1].

上記のリストから、私が本当に欲しいものは次のとおりです。

[['27/2', 72], ['23/2', 21], ['25/2', 11]]

リストなしで操作を実行できますが、最後に、最終的に使用するためにリストに変換する必要があります。

4

3 に答える 3

6

私があなただったら、辞書を使います。

values = {}
for item in object_: # changed object to object_
    values[item.day] = values.get(item.day, 0) + item.seconds
于 2012-05-15T03:41:06.863 に答える
2

使用方法は次のとおりですdefaultdict

from collections import defaultdict
values = defaultdict(int)
for o in my_object:
    values[o.day] += o.seconds

これが使用する方法ですCounter

from itertools import Counter
values = Counter()
for o in my_object:
    values += Counter({o.day: o.seconds})

このような値からリストを取得できます

values.items() # or list(values.items()) in Python3
于 2012-05-15T05:10:37.077 に答える
1

これがあなたが必要とすることをするはずの素晴らしいワンライナー(輸入を除く)です:

from collections import Counter
values = sum([Counter({o.day: o.seconds}) for o in objects], Counter()).items()
于 2012-05-15T06:47:31.117 に答える