2
我想寫一個函數,將使用矢量數據結構a
存儲索引和值,並將其轉換爲新的列表。新列表還將所有具有重複索引的值彙總起來。另外,a
可以是任意長度。函數來創建從索引和值的矢量數據(字典)列表
例如:
a = {'index': [], 'value': []}
a['index'] = [0, 2, 7, 2, 2, 5, 1]
a['value'] = [1.0, 2.0, 3.0, 4.0, 8.0, 6.0, 7.0]
所需的輸出將是:
x = [1.0, 7.0, 14.0, 0.0, 0.0, 6.0, 0.0, 3.0]
其中對於索引2,將總結對14(2,4,和8)。對於沒有出現在a['index']
中的任何索引,將在x
中分配0
。
我試圖通過一個新的x
行重複a[index,values]
行,長度爲零的值爲n
。如果x[i]
已經存在,它將和現有值相加。我知道我的說法有點過,但我不知道如何解決語法是:
def newlist(a, n=None):
i_max = max(a['index']) if a['index'] else -1
if n is None:
n = i_max+1
else:
assert n > i_max,
x = [0] * n
for i, v in zip(a['index'], a['value']):
if x[i] in a['index']:
x[i]+=v
else:
x[i]=v
return x
啊哈。這使得它變得更簡單了。謝謝 – GenXeral