我有一個python dictionary
,其中包含按鍵'time','power'和'usage'中的3 lists
。 所有列表都具有相同數量的元素,並且所有列表均已排序。我想要做的是總結列表'權力'和'用法'的所有元素,它們的索引 對應於列表'時間'中的相同值,以便每次只有一個樣本的權力和使用率單元。如何根據Python中第一個相同的元素求出3個相同大小的排序列表?
例如改造這個字典:
{'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
有沒有蟒蛇的方式來做到這一點更簡單和全面?
其實我有20只不同的列出了字典,功率和使用的詳細信息... – 2013-04-10 12:55:48
不是所有的列表進行排序= P。或者至少'功耗'和'使用率'似乎有一些奇怪的標準。它看起來更像是你的元組''(時間,力量,用法)'存儲爲命名列表。他們通過「時間」字段排序,你想壓縮它。但它仍然不可動搖。如果我把一切都對了,哈哈。你也想「總結」所有其他領域? – luk32 2013-04-10 13:01:53
你做錯了。你應該有一個對象列表,每個對象都有'time','power'和'usage'字段(和其他20個字段)。這將使你的代碼更簡單,更清晰,更加Pythonic,並且使處理更簡單。 – user9876 2013-04-10 13:22:41