在 Python 中,字典(`dict`)的键值对存储顺序可能与你预期不一致,这种现象通常与以下原因有关:
python
d = {'a': {'x': 1, 'y': 2}, 'b': {'z': 3}}
print(d)
可能输出: {'b': {'z': 3}, 'a': {'y': 2, 'x': 1}}
python
d = {'a': {'x': 1, 'y': 2}, 'b': {'z': 3}}
d['a']['y'] = 99 修改值不会改变顺序
del d['a']['x'] 删除键可能导致顺序变化
print(d)
可能输出: {'a': {'y': 99}, 'b': {'z': 3}}
python
import json
d = {'a': {'y': 2, 'x': 1}, 'b': {'z': 3}}
print(json.dumps(d, indent=2))
输出键会按字母顺序排序: {"a": {"x": 1, "y": 2}, "b": {"z": 3}}
1. 使用 `collections.OrderedDict`:
python
from collections import OrderedDict
d = OrderedDict([('a', OrderedDict([('x', 1), ('y', 2)])), ('b', OrderedDict([('z', 3)]))])
2. 确保使用 Python 3.7+ 并避免动态修改嵌套字典的结构。
3. 控制序列化行为:
python
json.dumps(d, sort_keys=False) 禁止自动排序
字典的“换位”现象本质上是字典无序性或哈希表实现导致的。如果你需要严格的顺序控制:
避免依赖字典的“视觉顺序”进行逻辑判断
版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态