Một số tin tức tuyệt vời! Kể từ phiên bản 3.6, việc triển khai cPython đã duy trì thứ tự chèn từ điển ( https://mail.python.org/pipermail/python-dev/2016-September/146327.html ). Điều này có nghĩa là thư viện json hiện đang giữ trật tự theo mặc định. Quan sát sự khác biệt trong hành vi giữa python 3.5 và 3.6. Mật mã:
import json
data = json.loads('{"foo":1, "bar":2, "fiddle":{"bar":2, "foo":1}}')
print(json.dumps(data, indent=4))
Trong py3.5, thứ tự kết quả là không xác định:
{
"fiddle": {
"bar": 2,
"foo": 1
},
"bar": 2,
"foo": 1
}
Trong triển khai cPython của python 3.6:
{
"foo": 1,
"bar": 2,
"fiddle": {
"bar": 2,
"foo": 1
}
}
Tin tức thực sự tuyệt vời là điều này đã trở thành một đặc tả ngôn ngữ kể từ python 3.7 (trái ngược với chi tiết triển khai của cPython 3.6+): https://mail.python.org/pipermail/python-dev/2017-December/151283 .html
Vì vậy, câu trả lời cho câu hỏi của bạn bây giờ trở thành: nâng cấp lên python 3.6! :)