Python -- OrderedDict 中的字典理解不起作用
Python -- Dictionary comprehension inside an OrderedDict not working
我有这个代码:
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 对象组成的正则字典的 ordereddict。我最初有嵌套的 dict 理解并且它工作正常但决定我需要订购顶级 dict 所以最终以这种方式结束。问题是现在我得到这个错误:
TypeError: 'type' object does not support item assignment
关注有问题的代码段。我不知道我做错了什么。 ordereddict 是否不允许理解,即使它不是顶级的?也许它试图在 ordereddict 中对所有字典进行排序,但不能因为理解处于较低级别?不确定,也许这是我由于隧道视野而无法发现的荒谬之处。
PS:如果你需要知道我在上面引用的全局变量中有什么:
STATUS_ICON_SETS = ("comp", "net", "serv", "audio", "sec", "ups", "zwave", "stats")
STATUS_ICON_CONDITIONS = ("on", "off")
STATUS_ICON_STRING = "images/{0}_{1}.png"
您需要调用类型来创建实例:
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)
但我不确定这种方法是否提高了可读性。
我有这个代码:
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 对象组成的正则字典的 ordereddict。我最初有嵌套的 dict 理解并且它工作正常但决定我需要订购顶级 dict 所以最终以这种方式结束。问题是现在我得到这个错误:
TypeError: 'type' object does not support item assignment
关注有问题的代码段。我不知道我做错了什么。 ordereddict 是否不允许理解,即使它不是顶级的?也许它试图在 ordereddict 中对所有字典进行排序,但不能因为理解处于较低级别?不确定,也许这是我由于隧道视野而无法发现的荒谬之处。
PS:如果你需要知道我在上面引用的全局变量中有什么:
STATUS_ICON_SETS = ("comp", "net", "serv", "audio", "sec", "ups", "zwave", "stats")
STATUS_ICON_CONDITIONS = ("on", "off")
STATUS_ICON_STRING = "images/{0}_{1}.png"
您需要调用类型来创建实例:
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)
但我不确定这种方法是否提高了可读性。