我正在迭代这些对象并创建列表列表。
这样的事情:
#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]]
我可以在没有列表的情况下进行操作,但最后,我需要将其转换为列表以供最终使用。
答案 0 :(得分:6)
如果我是你,我会使用字典。
values = {}
for item in object_: # changed object to object_
values[item.day] = values.get(item.day, 0) + item.seconds
答案 1 :(得分: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
答案 2 :(得分:1)
这是一个很好的单行(禁止进口)应该做你需要的:
from collections import Counter
values = sum([Counter({o.day: o.seconds}) for o in objects], Counter()).items()