Как преобразовать OrderedDict в обычный dict в python3
Я борюсь со следующей проблемой:
Я хочу преобразовать OrderedDict такой:
OrderedDict([('method', 'constant'), ('data', '1.225')])
в обычный дикт такой:
{'method': 'constant', 'data':1.225}
потому что я должен хранить его как строку в базе данных. После преобразования заказ больше не важен, поэтому я могу сэкономить заказанную функцию в любом случае.
Спасибо за любую подсказку или решения,
Бен
6 ответов:
>>> from collections import OrderedDict >>> OrderedDict([('method', 'constant'), ('data', '1.225')]) OrderedDict([('method', 'constant'), ('data', '1.225')]) >>> dict(OrderedDict([('method', 'constant'), ('data', '1.225')])) {'data': '1.225', 'method': 'constant'} >>>однако, чтобы сохранить его в базе данных, было бы намного лучше преобразовать его в формат, такой как JSON или Pickle. С рассолом вы даже сохраняете порядок!
хотя это вопрос годичной давности, я хотел бы сказать, что с помощью
dictне поможет, если у вас есть заказанный дикт внутри заказанного Дикта. Самый простой способ, который может преобразовать эти рекурсивные упорядоченные dict будетimport json from collections import OrderedDict input_dict = OrderedDict([('method', 'constant'), ('recursive', OrderedDict([('m', 'c')]))]) output_dict = json.loads(json.dumps(input_dict)) print output_dict
это легко конвертировать
OrderedDictобычныйDictтакой:dict(OrderedDict([('method', 'constant'), ('data', '1.225')]))Если вам нужно сохранить его в виде строки в базе данных, используя JSON-это путь. Это тоже довольно просто, и вам даже не придется беспокоиться о преобразовании в обычный
dict:import json d = OrderedDict([('method', 'constant'), ('data', '1.225')]) dString = json.dumps(d)или сбросить данные непосредственно в файл:
with open('outFile.txt','w') as o: json.dump(d, o)
Если вы ищете рекурсивную версию без использования
jsonмодуль:def ordereddict_to_dict(value): for k, v in value.items(): if isinstance(v, dict): value[k] = ordereddict_to_dict(v) return dict(value)
его простой способ
>>import json >>from collection import OrderedDict >>json.dumps(dict(OrderedDict([('method', 'constant'), ('data', '1.225')])))
вот что кажется самым простым и работает в python 3.7
d = OrderedDict([('method', 'constant'), ('data', '1.225')]) d2 = dict(d) # Now a normal dict
Comments