У меня есть список этого формата:
some_list = [[-5, 1000],
[0, 600],
[50, 600],
[100,700],
[170,650],
[190,700]]
, и возвращаемая функция должна быть результирующим диктом с ключами -5, -4, -3 ... и со значениями в виде суммы приращений до каждого ключа. так, например, выше должно быть -5: 0, -4: 1000, -3: 2000, -1: 3000, 0: 4000, 1: 4600 и далее.
Вот код, который частично работает. Проблема в том, что в то время как в операторе while требуется потолок для проверки, я добавил дополнительные элементы в конец списка. Предположим, это можно решить гораздо более элегантным способом. Также текущий код исключает последнюю строку элемента списка из-за оператора break.
def framegen(some_list):
n = 0
ys = some_list[0][0]
frame = []
xpos = []
x2 = 0
for i in some_list:
while (some_list[n][0]) <= ys < (some_list[(n+1)][0]):
x1 = ys
frame.append(x1)
xpos.append(x2)
x2 += some_list[n][1]
ys += 1
if n == len(some_list) -2 :
break
else:
n += 1
temp_dic = dict(zip(frame, xpos))
dic = {}
for n in temp_dic:
dic[n] = temp_dic[n] - temp_dic[0]
return dic
Редактировать:
ожидаемый результат:
{ -5 : 0 ,
-4 : 1000 ,
-3 : 2000 ,
-2 : 3000 ,
-1 : 4000 ,
0 : 5000 ,
1 : 5600 ,
2 : 6200 ,
....}