Ben*_* A. 86 python ordereddictionary type-conversion
我正在努力解决以下问题:我想转换OrderedDict如下:
OrderedDict([('method', 'constant'), ('data', '1.225')])
Run Code Online (Sandbox Code Playgroud)
成为这样的常规字典:
{'method': 'constant', 'data':1.225}
Run Code Online (Sandbox Code Playgroud)
因为我必须将它作为字符串存储在数据库中.转换后,订单不再重要,所以无论如何我都可以省去订购的功能.
感谢任何提示或解决方案,
本
Thi*_*ter 75
>>> 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'}
>>>
Run Code Online (Sandbox Code Playgroud)
但是,要将其存储在数据库中,最好将其转换为JSON或Pickle等格式.有了Pickle你甚至可以保留订单!
thi*_*dam 57
尽管这是一个有问题的问题,但我想说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
Run Code Online (Sandbox Code Playgroud)
小智 7
很容易将您转换OrderedDict为常规,Dict如下所示:
dict(OrderedDict([('method', 'constant'), ('data', '1.225')]))
Run Code Online (Sandbox Code Playgroud)
如果必须将其作为字符串存储在数据库中,则可以使用JSON.这也很简单,你甚至不必担心转换为常规dict:
import json
d = OrderedDict([('method', 'constant'), ('data', '1.225')])
dString = json.dumps(d)
Run Code Online (Sandbox Code Playgroud)
或者将数据直接转储到文件中:
with open('outFile.txt','w') as o:
json.dump(d, o)
Run Code Online (Sandbox Code Playgroud)
如果要查找不使用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)
Run Code Online (Sandbox Code Playgroud)
这是看起来最简单并且适用于 python 3.7 的内容
from collections import OrderedDict
d = OrderedDict([('method', 'constant'), ('data', '1.225')])
d2 = dict(d) # Now a normal dict
Run Code Online (Sandbox Code Playgroud)
现在检查一下:
>>> type(d2)
<class 'dict'>
>>> isinstance(d2, OrderedDict)
False
>>> isinstance(d2, dict)
True
Run Code Online (Sandbox Code Playgroud)
注意:这也有效,并给出相同的结果 -
>>> {**d}
{'method': 'constant', 'data': '1.225'}
>>> {**d} == d2
True
Run Code Online (Sandbox Code Playgroud)
还有这个——
>>> dict(d)
{'method': 'constant', 'data': '1.225'}
>>> dict(d) == {**d}
True
Run Code Online (Sandbox Code Playgroud)
干杯
| 归档时间: |
|
| 查看次数: |
71803 次 |
| 最近记录: |