В своем коде вы сначала пишете 120
в оба списка в final_expense_data
, а затем пишете 20
в оба (из-за цикла for i in new_expense_values:
).Вы должны использовать один и тот же индекс для всех итераций списков списков:
new_expenses = ["petrol", "phone"]
new_expense_values = ["120", "20"]
final_expense_data = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0,]]
for j in range(len(new_expenses)):
final_expense_data[j][0] = new_expense_values[j]
print(final_expense_data)
[['120', 0, 0, 0, 0, 0], ['20', 0, 0, 0, 0, 0]]
Но я рекомендую вам использовать dicts вместо разныхсписки. далеко проще изменить ваши данные с ними:
from pprint import pprint
final_expense_data = {
'petrol': [0, 0, 0, 0, 0, 0],
'phone': [0, 0, 0, 0, 0, 0],
'waka': [0, 0, 0, 0, 0, 0]
}
new_expenses = {
'petrol': 120,
'phone': 20,
'big_red_hat': 11111
}
for e in new_expenses:
if e in final_expense_data:
final_expense_data[e][0] = new_expenses[e]
else:
final_expense_data[e] = [0, 0, 0, 0, 0, 0]
final_expense_data[e][0] = new_expenses[e]
pprint(final_expense_data)
{'big_red_hat': [11111, 0, 0, 0, 0, 0],
'petrol': [120, 0, 0, 0, 0, 0],
'phone': [20, 0, 0, 0, 0, 0],
'waka': [0, 0, 0, 0, 0, 0]}