У меня есть словарь в python, и я хотел бы вставить в него значения из базы данных для быстрого заполнения моего Db. Каждый раз, когда я пытаюсь это сделать, я получаю следующую ошибку: ValueError: too many values to unpack (expected 2)
Вот что у меня есть:
def post(self, request):
image = "no image"
characters = {
"Auron": {'name': "Auron",
'stars': 4,
'image': image,
'series': "FF10"},
"Barret": {'name': "Barret",
'stars': 3,
'image': image,
'series': "FF7"},
"Zidane": {'name': "Zidane",
'stars': 5,
'image': image,
'series': "FF9"}
}
for key, value in characters:
number = 3
name = value.name
stars = value.stars
image = value.image
series = value.series
Characters.objects.create(id=number,name=name,stars=stars,image=image,series=series)
number += 1
return JsonResponse("Added all chars", safe=False)
Кроме того, этот код запускается после вызова ajax. Почему это происходит? Я искал это, но не смог найти ничего похожего на мою проблему. Что может быть причиной этого?
Спасибо
for key, value in characters.iteritems():
Причина в том, что вы получаете ключи только в том случае, если вы перебираете диктатор. Вам нужно явно перебирать items()
или iteritems()
(позже, используя меньше памяти вообще)
>>> d=dict(a=1, b=2)
>>> d
{'a': 1, 'b': 2}
>>> [x for x in d]
['a', 'b']
>>> [x for x in d.iteritems()]
[('a', 1), ('b', 2)]
>>> [x for x in d.items()]
[('a', 1), ('b', 2)]
Обратите внимание, как iteritems и items являются кортежами, а прямая итерация по словарю - нет?
Вы можете узнать больше на https://www.python-course.eu/dictionaries.php
Или прямо из источника https://docs.python.org/2/library/stdtypes.html#dict