Python——OrderedDict中的字典理解不起作用

Python——OrderedDict中的字典理解不起作用,python,for-loop,typeerror,ordereddictionary,dictionary-comprehension,Python,For Loop,Typeerror,Ordereddictionary,Dictionary Comprehension,我有以下代码: 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() \

我有以下代码:

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图像对象的规则字典,这些字典是通过理解建立的。我最初有嵌套的dict理解,它工作得很好,但我决定需要订购顶级dict,所以以这种方式结束。问题是,现在我遇到了以下错误:

TypeError: 'type' object does not support item assignment
把重点放在有问题的代码上。我不知道我做错了什么。ordereddict不允许理解,即使它不是顶级的吗?也许它试图把所有的听写都按顺序排列,但却不能,因为理解力处于较低的水平?不确定,也许是因为隧道视力我看不到的可笑的东西

PS:如果您需要了解上面的globals I参考中的内容:

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()
您省略了那里的
()

您也可以在生成
(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)

但我不确定这种方法是否提高了可读性。

非常快速的回答,谢谢。它成功了;)现在我觉得自己很傻。我想用参数来分配它,但ordereddict来源中的评论说不要这样做,我想是因为参数顺序可能会混淆?不确定。我会试试看,确保它保持正常。谢谢。很快回答,谢谢。它成功了;)现在我觉得自己很傻。我想用参数来分配它,但ordereddict来源中的评论说不要这样做,我想是因为参数顺序可能会混淆?不确定。我会试试看,确保它保持正常。谢谢