gpt4 book ai didi

python - JSON 对象中的项目使用 "json.dumps"出现故障?

转载 作者:IT老高 更新时间:2023-10-28 12:32:11 27 4
gpt4 key购买 nike

我正在使用 json.dumps 转换成 json 之类的

countries.append({"id":row.id,"name":row.name,"timezone":row.timezone})
print json.dumps(countries)

我得到的结果是:

[
{"timezone": 4, "id": 1, "name": "Mauritius"},
{"timezone": 2, "id": 2, "name": "France"},
{"timezone": 1, "id": 3, "name": "England"},
{"timezone": -4, "id": 4, "name": "USA"}
]

我希望按以下顺序使用键:id、name、timezone - 但我有 timezone、id、name。

我应该如何解决这个问题?

最佳答案

Python dict(Python 3.7 之前)和 JSON 对象都是无序集合。您可以传递 sort_keys 参数,对键进行排序:

>>> import json
>>> json.dumps({'a': 1, 'b': 2})
'{"b": 2, "a": 1}'
>>> json.dumps({'a': 1, 'b': 2}, sort_keys=True)
'{"a": 1, "b": 2}'

如果您需要特定的订单;你可以 use collections.OrderedDict :

>>> from collections import OrderedDict
>>> json.dumps(OrderedDict([("a", 1), ("b", 2)]))
'{"a": 1, "b": 2}'
>>> json.dumps(OrderedDict([("b", 2), ("a", 1)]))
'{"b": 2, "a": 1}'

Since Python 3.6 ,关键字参数顺序被保留,上面可以使用更好的语法重写:

>>> json.dumps(OrderedDict(a=1, b=2))
'{"a": 1, "b": 2}'
>>> json.dumps(OrderedDict(b=2, a=1))
'{"b": 2, "a": 1}'

PEP 468 – Preserving Keyword Argument Order .

如果您的输入以 JSON 形式给出,那么为了保留顺序(获取 OrderedDict),您可以传递 object_pair_hook, as suggested by @Fred Yankowski :

>>> json.loads('{"a": 1, "b": 2}', object_pairs_hook=OrderedDict)
OrderedDict([('a', 1), ('b', 2)])
>>> json.loads('{"b": 2, "a": 1}', object_pairs_hook=OrderedDict)
OrderedDict([('b', 2), ('a', 1)])

关于python - JSON 对象中的项目使用 "json.dumps"出现故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com