シナリオは次のとおりです。整数の(同じ長さの) n個のリストと(実際には同じ長さの)アキュムレータが与えられた場合、要素ごとの合計をインプレースで累積します。インプレース制約は、リストのdictに値を累積するためにここにあります(ハム...かなり明確ではありません。以下の例を参照してください)
編集:私はnumpyを含まない解決策を探しています
# My lists are long (they are actually pixels in 1000x1000 images)
# but I keep l low for the sake of the example
l = 5
# Values here are arbitrary and won't be repeated in the real word
# e.g. list 1 might be [41,15,0,2,3], etc.
lists = [
{'id': 1, 'values': [12]*l},
{'id': 2, 'values': [42]*l},
{'id': 2, 'values': [25]*l},
{'id': 1, 'values': [6]*l},
]
maps = {
1: [0]*l,
2: [0]*l
}
for item in lists:
# Get the "target" for this list
target = maps[item['id']]
# Element-wise addition of item['values'] to target here!
# This won't work
target = map(lambda x,y:x+y, target, item['values'])
# This neither
target = [(x+y) for x,y in itertools.izip(target,item['values'])]
# For either of the previous to work, I need to re-assign
# the result to 'target', like so
maps[item['id']] = target
それが機能し、私はそれと一緒に専門的に生きることができますが、私は個人的にはできません。
誰かが今夜私をよく眠らせることができますか?