Python слишком много значений, чтобы распаковать при попытке вставить данные из словаря

0

У меня есть словарь в 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. Почему это происходит? Я искал это, но не смог найти ничего похожего на мою проблему. Что может быть причиной этого?

Спасибо

Теги:
dictionary

1 ответ

0
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

  • 0
    Привет, я до сих пор не до конца понимаю. Когда я вызываю это, я получаю, например, Key = "Auron", value = "'name": "Auron", "stars": 4, "image": image, "series": "FF10" ". Как я могу получить только значения ключей "имя", "звезды" и т. Д.?
  • 0
    значение в characters.itervalues (): см. docs.python.org/2/library/stdtypes.html#dict.itervalues
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню