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来源中的评论说不要这样做,我想是因为参数顺序可能会混淆?不确定。我会试试看,确保它保持正常。谢谢