近日,在进行json字符串转list的过程中,发现了一个令人困惑的问题,就是转换后list的顺序发生了一些变化。下面我们一起来探究一下这个问题。
首先,我们先看一下json字符串转list的代码:
import json json_str = '{"name": "小明","age": 18,"gender": "男"}' dict_data = json.loads(json_str) list_data = list(dict_data.values()) print(list_data)
[18,'男','小明']
然而,在实际运行中,有时候输出的结果顺序会变成:
['男',18,'小明']
这是为什么呢?其实,这和Python中的字典有关。
在Python 3.7版本及以前,字典的顺序是随机的。而在Python 3.7版本及以后,字典会保留插入顺序,也就是说,当我们将一个字典转换成list时,输出的顺序就是该字典中key对应的value的顺序。
因此,如果我们想要保留顺序,可以采用collections模块中的OrderedDict类来代替字典。
下面是使用OrderedDict类的代码:
from collections import OrderedDict import json json_str = '{"name": "小明","gender": "男"}' dict_data = json.loads(json_str,object_pairs_hook=OrderedDict) list_data = list(dict_data.values()) print(list_data)
['小明','男']
通过使用OrderedDict类,我们成功地保留了字典的顺序,从而解决了json字符串转list顺序变了的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。