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 回答