如何将OrderedDict转换为python3中的常规词典
我正在努力解决以下问题:我想要这样转换一个OrderedDict
:
OrderedDict([('method', 'constant'), ('data', '1.225')])
成这样的常规字典:
{'method': 'constant', 'data':1.225}
因为我必须将其作为string存储在数据库中。 转换之后,订单就不再重要了,所以我可以放弃订购的function。
感谢任何提示或解决scheme,
本
>>> 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
无济于事的。 最简单的方法可以转换这些recursion的有序字典将是
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')]))
如果您必须将其作为string存储在数据库中,那么使用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
模块的recursion版本:
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')])))