将QVariant转换回字典在Python中
我用QSetting保存了一个字典,当我加载它的时候,得到了一个QVariant。
>>dict
{u'key1': u'val1', u'key2': u'val2',....}
...
>>loadedDict
<PyQt4.QtCore.QVariant object at 0x02B11848>
我该如何把它转换回字典,这样我就可以像之前那样使用它了:
>>dict['key2']
val2
1 个回答
3
你可以把字典(dict)转换成字符串,然后再用 eval(str) 把它变回字典:
pydict = {'key1': 'val1', 'key2': 'val2'}
variant = QtCore.QVariant( pydict )
...
pydict = eval( str( variant.toString() ) )
print pydict
>>> {'key1': 'val1', 'key2': 'val2'}
不过要注意,如果 eval 不能把某个键或值从字符串转换回字典,它可能会出错。这种情况通常发生在你有一些不是内置类型的东西(比如 str、int、list 等)时。不过在你的情况下,这个方法应该没问题。