cry*_*ice 3 python dictionary wxpython
我在 wxPython 中有一个文本框,它获取dictionary.items() 的输出,并在将项目添加到字典时将其显示给用户。然而,原始数据非常难看,看起来像
[(u'BC',45)
(u'CHM',25)
(u'CPM',30)]
Run Code Online (Sandbox Code Playgroud)
我知道dictionary.items()是一个元组列表,但我似乎不知道如何制作一个与wxPython的SetValue()方法兼容的好格式。
我尝试过迭代列表和元组。如果我使用print语句,输出就很好。但是当我用 SetValue() 替换print语句时,它似乎只获取每个元组的最后一个值,而不是元组中的两个项目。
我还尝试创建一个字符串并将该字符串传递给 SetValue(),但同样,我只能获取元组中的一项或另一项,而不能同时获取两项。
有什么建议么?
编辑:是的,我将dictionary.items()的结果传递到wxPython应用程序中的文本字段。我只是寻找类似的结果,而不是像上面这样的结果:
BC 45
CHM 25
CMP 30
Run Code Online (Sandbox Code Playgroud)
没什么特别的,只是简单地从每个元组中提取每个值并制作一个可视列表。
我尝试制作一个字符串格式并将其传递给 SetValue() 但它挂在元组中的两个值上。它要么双重打印每个字符串并将整数加在一起,要么简单地返回整数,具体取决于我如何格式化它。
没有内置的字典方法可以返回您想要的结果。
但是,您可以通过创建一个格式化字典的辅助函数来实现您的目标,例如:
def getNiceDictRepr(aDict):
return '\n'.join('%s %s' % t for t in aDict.iteritems())
Run Code Online (Sandbox Code Playgroud)
这将产生您确切想要的输出:
>>> myDict = dict([(u'BC',45), (u'CHM',25), (u'CPM',30)])
>>> print getNiceDictRepr(myDict)
BC 45
CHM 25
CPM 30
Run Code Online (Sandbox Code Playgroud)
然后,在您的应用程序代码中,您可以通过将其传递给来使用它SetValue:
self.textCtrl.SetValue(getNiceDictRepr(myDict))
Run Code Online (Sandbox Code Playgroud)