2016-04-07 6 views
0

Я хочу вычесть предыдущее значение из следующего значения в списке и, наконец, добавить выход в словарь.Как вычесть следующее значение из предыдущего значения в Python?

Пример:

# Original List 
l= [1, 10, 25, 35, 55, 100] 
# Expected Out put 
nl = [9, 15, 10, 20, 45] 
# another list 
lst = ['col1', 'col2', 'col3', 'col4', 'col5'] 
# final result 
result = [{'col1': 9}, {'col2': 15}, {'col3': 10}, {'col4': 20}, {'col5': 45}] 
+0

Возможный дубликат (HTTP [Как я могу перебирать два списка параллельно в Python?]: // StackOverflow. com/questions/1663807/how-can-i-iterate-through-two-lists-in-parallel-in-python) –

+0

Вы будете использовать 'zip', как указано в ссылке, для обработки обоих списков одновременно, но вместо двух в списках вы будете иметь 'l' и' l [1:] ' –

+0

В одной строке:' nl = [yx для x, y в zip (l, l [1:])] 'Окончательный результат 'si milar: 'result = [{k: v} для k, v в zip (lst, nl)] –

ответ

0

Вот что вам нужно сделать

l= [1, 10, 25, 35, 55, 100] 
nl = [(n-l[i-1]) if i else n for i,n in enumerate(l)] 
lst = ['col1', 'col2', 'col3', 'col4', 'col5'] 
final = dict(zip(lst, nl)) 
Out[460]: {'col1': 1, 'col2': 9, 'col3': 15, 'col4': 10, 'col5': 20} 
+0

Отлично. Благодарю. – Pradeep

+0

Может ли кто-нибудь объяснить нижний предел? –

Смежные вопросы