我有一个dictionary
包含 3lists
键的 python '时间','电源'和'使用'。所有列表都具有相同数量的元素,并且所有列表都已排序。我想要做的是总结列表'power'和'usage'的所有元素,它们的索引对应于列表'time'中的相同值,以便每个时间单位只有一个功率和使用情况样本。
例如转换这个字典:
{'time': [1, 2, 2, 3, 4, 4, 5],
'power': [2, 2, 3, 6, 3, 3, 2],
'usage': [0, 1, 1, 2, 1, 4, 7]}
对此:
{'time': [1, 2, 3, 4, 5],
'power': [2, 5, 6, 6, 2],
'usage': [0, 2, 2, 5, 7]}
我已经编写了这段有效的代码,但我不太喜欢它:
d = {'time':[1,2,2,3,4,4,5], 'power':[0,1,1,2,1,4,7], 'usage':[2,2,3,6,3,3,2]}
prev = -1
new_d = {'time':[], 'power': [], 'usage':[]}
indexes = range( len(d['time']) )
for i in indexes:
if d['time'][i]!=prev:
new_d['time'].append(d['time'][i])
new_d['power'].append(d['power'][i])
new_d['usage'].append(d['usage'][i])
else:
last_power = len( new_d['power'] ) - 1
last_usage = len( new_d['usage'] ) - 1
new_d['power'][last_power]+=d['power'][i]
new_d['usage'][last_usage]+=d['usage'][i]
prev=d['time'][i]
print d
print new_d
有没有一种pythonian方法可以更简单、更全面地做到这一点?