Django:为什么'Class'对象不可迭代

时间:2011-01-19 00:01:07

标签: python django list dictionary

我建了这样的字典列表

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 个答案:

答案 0 :(得分:5)

迭代字典只是迭代键,而不是键值对。所以就行了

for k,v in dic:

Python仅使用一个键,例如Classobj1,并尝试将其解压缩以匹配元组k,v。由于Classobj1无法迭代,因此无法解压缩以匹配两个项目,这就是您收到此错误的原因。

要迭代键值对,请使用items()或iteritems():

for k,v in dic.items():

答案 1 :(得分:1)

您需要使用dic.iteritems()

答案 2 :(得分:0)

尝试使用

for dic in lst:
    for key in dic.keys():
     /* process dic[key] */

答案 3 :(得分:0)


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

你得到'< class obj>是不可迭代的'错误,因为dict在迭代它时产生其键,所以当你达到说Classobj1时,程序希望Classobj1是一个可迭代的对象,它将产生{{{}的值。 1}}。