キー「時間」、「電力」、「使用」にdictionary
3を含むpythonがあります。lists
すべてのリストに同じ数の要素があり、すべてのリストがソートされています。私がやりたいことは、時間単位ごとに電力と使用量のサンプルが 1 つだけになるように、インデックスがリスト「時間」の同じ値に対応するリスト「電力」と「使用量」のすべての要素を合計することです。
たとえば、この辞書を変換します。
{'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の方法はありますか?