У меня есть список prices
:
prices = [0.9986, 0.8065, -0.1779, 0.8065]
и список словарей mydicts
:
mydicts = [{'name':'Food1'}, {'name':'Food2'}, {'name':'Food3'}, {'name':'Food4'}]
Теперь мне нужно передать каждый элемент цены как значение для ключа price
в каждом словаре, это будет результат:
mydicts = [
{'name':'Food1', 'price':0.9986},
{'name':'Food2', 'price':0.8065},
{'name':'Food3', 'price':-0.1779},
{'name':'Food4', 'price':0.8065}
]
Для этого я перебираю список и список словарей и присваиваю каждое значение списка словарю:
for price, dictionary in zip(prices, mydicts):
dictionary['price'] = price
Мне было интересно, есть ли более эффективный способ сделать это. В моем случае мне нужно присвоить множество значений списку словарей, и я не уверен, что это самый эффективный способ.
В вашем решении нет ничего плохого. Это O(n), максимально эффективное, простое и короткое.
И я понимаю, что если бы мне нужно было назначить несколько списков вместо одного, как в моем первоначальном вопросе, было бы более эффективно сделать все это в одном цикле, верно? Чтобы по-прежнему быть O (n)
Вы говорите о добавлении в диктофоны списков типа prices
, верно? Если это так, то да, было бы эффективнее сделать это в одном цикле, чем в нескольких. Вы бы просто добавили их в zip
.
Отлично, это то, что я искал :)
Нет ничего более эффективного, чем подход O(n), поскольку вам нужно коснуться каждого индекса, чтобы создать каждый элемент.
Нет, насколько я понимаю, это настолько эффективно, насколько это возможно.