lin*_*982 1 python for-loop ordereddictionary typeerror 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() \
for condition in guiConfig.STATUS_ICON_CONDITIONS}
Run Code Online (Sandbox Code Playgroud)
它建立了wx.Image对象的常规字典的有序字典,这些字典通过理解来设置。我最初嵌套了dict理解,但效果很好,但决定我需要订购顶级dict,所以最终以这种方式结束。问题是,现在我收到此错误:
TypeError: 'type' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
将相关代码归零。我无法弄清楚我做错了什么。即使它不是顶级的,ordersdict是否也不允许理解?也许它会尝试对有序词典中的所有词典进行排序,并且因为理解力处于较低水平而不能这样做吗?不确定,也许这是因为隧道视觉我无法发现的荒谬之处。
PS:如果您需要了解我在上面引用的全局变量中包含的内容:
STATUS_ICON_SETS = ("comp", "net", "serv", "audio", "sec", "ups", "zwave", "stats")
STATUS_ICON_CONDITIONS = ("on", "off")
STATUS_ICON_STRING = "images/{0}_{1}.png"
Run Code Online (Sandbox Code Playgroud)
您需要调用类型来创建实例:
self.statusIcons = collections.OrderedDict()
Run Code Online (Sandbox Code Playgroud)
您在()那里省略了。
您也可以在生成器表达式中创建产生了(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)
Run Code Online (Sandbox Code Playgroud)
但是我不确定这种方法是否会提高可读性。
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |