我建了这样的字典列表
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”对象不可迭代。
答案 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}}。