为什么 python 如此排列我的字典?[重复]
- 2024-12-16 08:35:00
- admin 原创
- 177
问题描述:
这是我的字典
propertyList = {
"id": "int",
"name": "char(40)",
"team": "int",
"realOwner": "int",
"x": "int",
"y": "int",
"description": "char(255)",
"port": "bool",
"secret": "bool",
"dead": "bool",
"nomadic": "bool",
"population": "int",
"slaves": "int",
}
但是当我用“\n”.join(myDict)打印出来时我得到了这个
name
nomadic
dead
port
realOwner
secret
slaves
team
y
x
population
id
description
我知道字典是无序的,但每次结果都一样,我不知道为什么。
解决方案 1:
对于旧版本的 Python,真正的问题应该是“为什么不呢?” — 无序字典通常以哈希表的形式实现,其中元素的顺序定义明确但并不明显(Python 文档曾经这样陈述这一点)。您的观察完全符合哈希表的规则:看似任意,但顺序不变。
Python 此后改变了其dict
实现以保留插入顺序,这在 Python 3.7 中得到了保证。因此,该实现不再构成纯哈希表(但在其实现中仍使用哈希表)。
解决方案 2:
内置字典类型的规范不承认任何顺序的保存,最好将字典视为一组无序的对key: value
...
您可能需要检查OrderedDict
模块,它是具有键插入顺序的有序字典的实现。
解决方案 3:
关于字典排序,唯一可以依赖的是,如果字典没有被修改,其顺序将保持不变;例如,在不修改字典的情况下对字典进行两次迭代将产生相同的键序列。然而,尽管 Python 字典的顺序是确定性的,但它可能会受到插入和删除顺序等因素的影响,因此相同的字典最终可能会有不同的顺序:
>>> {1: 0, 2: 0}, {2: 0, 1: 0}
({1: 0, 2: 0}, {1: 0, 2: 0})
>>> {1: 0, 9: 0}, {9: 0, 1: 0}
({1: 0, 9: 0}, {9: 0, 1: 0})
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD