我从这段代码中得到该异常:
class Transaction:
def __init__ (self):
self.materials = {}
def add_material (self, m):
self.materials[m.type + m.purity] = m
def serialize (self):
ser_str = 'transaction_start\n'
for k, m in self.materials:
ser_str += m.serialize ()
sert += 'transaction_end\n'
return ser_str
这for
行是引发异常的行。该m
s为Material
对象。有人有什么想法吗?
self.materials
是一个dict
,默认情况下,您仅迭代键(字符串)。
由于self.materials
具有两个以上的键*,因此无法将它们解压到tuple
“ k, m
”中,因此引发了异常。ValueError
在Python 2. x中,要遍历键和值(tuple
“ k, m
”),我们使用self.materials.iteritems()
。
但是,由于无论如何都将键扔掉了,因此还可以简单地遍历字典的值:
for m in self.materials.itervalues():
在Python 3. x中,preferred dict.values()
(返回字典视图对象):
for m in self.materials.values():
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句