回答:
>>> 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などの形式に変換する方がはるかに適切です。ピクルを使用すると、注文を保存することもできます!
json
ことができます。
これは1年前の質問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')])))
?