Конвертировать QVariant обратно в dict в Python

Я сохранил dict с QSetting, и когда я загружаю его, я получаю QVariant

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

Как преобразовать его обратно в dict, чтобы я мог использовать его снова так:

>>dict['key2']
val2

1 ответ

Решение

Вы можете преобразовать dict в строку и после просто eval(str) вернуть обратно в dict:

pydict  = {'key1': 'val1', 'key2': 'val2'}
variant = QtCore.QVariant( pydict )
...
pydict = eval( str( variant.toString() ) )
print pydict
>>> {'key1': 'val1', 'key2': 'val2'}

Просто помните, что eval может потерпеть неудачу, если не сможет преобразовать один из ключей или значений из строки в dict. это может произойти, если у вас нет встроенных типов (str, int, list..), но в вашем случае это не сработает.

Другие вопросы по тегам