当我想将json字符串转换为Python字典时,我有问题.我有类似的字符串
s={"name":{"Saban:Saulic"},"price":{"koncert:1000"} ....}
Run Code Online (Sandbox Code Playgroud)
当我写的东西像
tags=json.loads(s)
Run Code Online (Sandbox Code Playgroud)
我gtet字典但键的顺序与字符串不一样(它不是名字,价格......).如何将json字符串转换为字典并在键中保存顺序?
Die*_*rro 22
从Python 2.7开始,你就有了OrderedDict模块collections
这种字典保留了元素的插入顺序.
来自Python文档:
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])将fp(一个.read() - 支持包含JSON文档的类文件对象)反序列化为Python对象.
如果fp的内容使用UTF-8以外的基于ASCII的编码(例如latin-1)进行编码,则必须指定适当的编码名称.不允许基于ASCII的编码(例如UCS-2),并且应该用codecs.getreader(encoding)(fp)包装,或者简单地解码为unicode对象并传递给loads().
object_hook是一个可选函数,将使用任何对象文字解码(dict)的结果调用.将使用object_hook的返回值而不是dict.此功能可用于实现自定义解码器(例如JSON-RPC类提示).
object_pairs_hook是一个可选函数,将使用有序的对列表对解码的任何对象文字的结果进行调用.将使用object_pairs_hook的返回值而不是dict.此功能可用于实现依赖于键和值对被解码的顺序的自定义解码器(例如,collections.OrderedDict()将记住插入的顺序).如果还定义了object_hook,则object_pairs_hook优先.
我想你可以使用object_pairs_hook参数 collections.OrderedDict()
tags=json.loads(s, object_pairs_hook=collections.OrderedDict)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7826 次 |
| 最近记录: |