如何将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')])))