Answers:
>>> 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之类的格式。使用Pickle,您甚至可以保留订单!
json
太。
即使这是一个古老的问题,我想说的是,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)
这是看起来最简单的方法,可在python 3.7中使用
from collections import OrderedDict
d = OrderedDict([('method', 'constant'), ('data', '1.225')])
d2 = dict(d) # Now a normal dict
现在检查一下:
>>> type(d2)
<class 'dict'>
>>> isinstance(d2, OrderedDict)
False
>>> isinstance(d2, dict)
True
注意:这也有效,并且给出相同的结果-
>>> {**d}
{'method': 'constant', 'data': '1.225'}
>>> {**d} == d2
True
以及-
>>> dict(d)
{'method': 'constant', 'data': '1.225'}
>>> dict(d) == {**d}
True
干杯
如果您以某种方式想要一个简单而又不同的解决方案,则可以使用以下{**dict}
语法:
from collections import OrderedDict
ordered = OrderedDict([('method', 'constant'), ('data', '1.225')])
regular = {**ordered}
repr(dict(OrderedDict([('method', 'constant'), ('data', '1.225')])))
?