Django: почему объект 'Class' не повторяется - PullRequest
1 голос
/ 19 января 2011

Я создал список словаря, подобный этому

lst = [{'name': nameobj, Classobj1: "string", Classobj2: "string"}, \
{'name': nameobj, Classobj1: "string", Classobj2: "string"}]

, и я использую

for dic in lst:
   for k,v in dic:   # here is the line has probloem! What it happens?
       #process

Сообщение об ошибке похоже на объект "Classname", который не повторяется.

Ответы [ 4 ]

5 голосов
/ 19 января 2011

Итерация по словарю просто итерация по ключам, а не по парам ключ-значение. Итак, на линии

for k,v in dic:

Python берет только ключ, такой как Classobj1, и пытается распаковать его, чтобы он соответствовал кортежу k, v. Поскольку Classobj1 не может быть повторен, его нельзя распаковать для соответствия двум элементам, поэтому вы получаете эту ошибку.

Чтобы перебрать пары ключ-значение, используйте items () или iteritems ():

for k,v in dic.items():
1 голос
/ 19 января 2011

Вам нужно использовать dic.iteritems().

0 голосов
/ 19 января 2011

<code>
for dic in lst:
   for k,v in dic.iteritems():   # just added a call to iteritems
       #process

Вы получаетене повторяется 'ошибка, потому что dict возвращает свои ключи при итерации по ней, поэтому, когда вы наберете, скажем, Classobj1, программа ожидает, что Classobj1 будет итеративным объектом, который даст значения для k,v.

0 голосов
/ 19 января 2011

Попробуйте использовать

for dic in lst:
    for key in dic.keys():
     /* process dic[key] */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...