我可以期望 keys() 保持相同的顺序吗?
我计划将它们用于下拉框,如果我从字典中添加或删除项目,我不希望它们移动。
不,根据文档:
键和值以非随机的任意顺序列出,在 Python 实现中有所不同,并且取决于字典的插入和删除历史。
dict
不保证a 中键的顺序。
最好将字典视为一组无序的键:值对,并要求键是唯一的(在一个字典中)...
keys()
字典对象的方法以任意顺序返回字典中使用的所有键的列表(如果要对其进行排序,只需将sorted()
函数应用于它)。
Python 2.7+ 和 3.1+ 具有 PEP 372所描述的OrderedDict
类collections
,它完全符合您的要求。它会记住添加键的顺序:
>>> from collections import OrderedDict
>>> od = OrderedDict()
>>> od[1] = "one"
>>> od[2] = "two"
>>> od[3] = "three"
>>> od.keys()
[1, 2, 3]
不,不是从一天到下一天。keys() 将按任意顺序排列(尽管我认为它们在实例的生命周期内可能是一致的,但这不适用于您的菜单)。
Python3 有有序字典:collections.OrderedDict 文档
来自python 文档:
字典对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果要对其进行排序,只需对其应用sorted()函数)。
因此,解决此问题的一种方法是在“列出”它们后立即对它们进行排序。
您可能想尝试诸如字典或对象数组之类的东西。数组是有序的。菜单项的文本将位于数组或对象的某个字段中。