我有这段代码:
self.statusIcons = collections.OrderedDict
for index in guiConfig.STATUS_ICON_SETS:
self.statusIcons[index] = {condition:\
wx.Image(guiConfig.STATUS_ICON_STRING.format(index, condition),wx.BITMAP_TYPE_PNG).ConvertToBitmap() \
for condition in guiConfig.STATUS_ICON_CONDITIONS}
它设置了wx.Image对象的常规字典的有序指令,这些对象是通过理解设置的。我最初有嵌套字典理解,它工作正常,但我决定要订购顶级字典,所以最终以这种方式结束。问题是现在我收到了这个错误:
TypeError: 'type' object does not support item assignment
归零所讨论的代码。我无法弄清楚我做错了什么。有序的指令即使不是最高级别也不允许理解吗?也许它试图在有序的指令中排序所有的指令而不能,因为理解是在较低的层次上?不确定,也许这是因为隧道视觉我无法发现的荒谬。
PS:如果您需要知道我在上面引用的全局变量中的内容:
STATUS_ICON_SETS = ("comp", "net", "serv", "audio", "sec", "ups", "zwave", "stats")
STATUS_ICON_CONDITIONS = ("on", "off")
STATUS_ICON_STRING = "images/{0}_{1}.png"
答案 0 :(得分:4)
您需要调用类型来创建实例:
self.statusIcons = collections.OrderedDict()
您在那里省略了()
。
您也可以在生成(key, value)
元组的生成器表达式中创建OrderedDict元素:
self.statusIcons = collections.OrderedDict(
(index, {condition: wx.Image(
guiConfig.STATUS_ICON_STRING.format(index, condition),
wx.BITMAP_TYPE_PNG).ConvertToBitmap()
for condition in guiConfig.STATUS_ICON_CONDITIONS})
for index in guiConfig.STATUS_ICON_SETS)
但我不确定这种方法是否提高了可读性。