将QVariant转换回Python中的dict

时间:2013-02-01 12:13:02

标签: python dictionary casting qvariant

我用QSetting保存了dict,当我加载它时,我得到了QVariant

>>dict
{u'key1': u'val1', u'key2': u'val2',....}
...
>>loadedDict
<PyQt4.QtCore.QVariant object at 0x02B11848>

如何将其转换回dict,以便我可以再次使用它:

>>dict['key2']
val2

1 个答案:

答案 0 :(得分: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无法将其中一个键或值从string转换为dict,则eval可能会失败。如果你有一个没有build_in类型(str,int,list ..)会发生这种情况,但在你的情况下,它不会有任何问题。