Преобразовать строковое представление словаря в словарь? - PullRequest
654 голосов
/ 12 июня 2009

Как я могу преобразовать str представление dict, такое как следующая строка, в dict?

s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"

Я предпочитаю не использовать eval. Что еще я могу использовать?

Основная причина этого, один из написанных им классов моих коллег, преобразует все входные данные в строки. Я не в настроении пойти и изменить его классы, чтобы иметь дело с этой проблемой.

Ответы [ 11 ]

3 голосов
/ 26 декабря 2016

никакие библиотеки не используются:

dict_format_string = "{'1':'one', '2' : 'two'}"
d = {}
elems  = filter(str.isalnum,dict_format_string.split("'"))
values = elems[1::2]
keys   = elems[0::2]
d.update(zip(keys,values))

ПРИМЕЧАНИЕ. Поскольку он жестко закодирован, split("'") будет работать только для строк, в которых данные имеют одинарные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...