Python 为啥list不能作为字典的key

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 为啥list不能作为字典的key相关的知识,希望对你有一定的参考价值。

字典的键是需要不可变类型的,而列表是可变的,列表可以通过索引赋值,所以不能作为字典的键,元组最有意思,元组是不可变但有是可变的,之所以这么说,是因为元组不能像列表一样通过索引赋值,但是如果组成元组的是多个列表的话,那么ok,列表可变,元组内列表变了,元组也就变了。 参考技术A 字典的key是字符串,list是数据集合,你说能作为key吗?

为啥python中字典的keys()以不同的顺序返回? [复制]

【中文标题】为啥python中字典的keys()以不同的顺序返回? [复制]【英文标题】:why keys() of dictionary in python returns in a different order? [duplicate]为什么python中字典的keys()以不同的顺序返回? [复制] 【发布时间】:2015-04-04 01:19:52 【问题描述】:

我创建了一个字典 a 并尝试使用方法 keys() 来返回它的键。下面是我得到的。我注意到keys() 的输出不是按字母顺序或字典中的原始顺序。

a
Out[1]: 1: 'JAN', 2: 'FEB', 3: 'MAR', 'APR': 4, 'MAY': 5

a.keys()
Out[2]: ['APR', 1, 2, 3, 'MAY']

任何人都可以帮助我理解为什么会发生这种情况。以及这里使用的 order keys() 是什么?

【问题讨论】:

根本没有顺序....那是因为python字典不是按键排序的...你第一次很幸运。 :p 因为不是,所以需要排序>>> a=1: 'JAN', 2: 'FEB', 3: 'MAR', 'APR': 4, 'MAY': 5 >>> sorted(a.keys()) [1, 2, 3, 'APR', 'MAY'] @littlejoshua 字典没有排序:docs.python.org/2/tutorial/datastructures.htmlthe keys used in the dictionary, in arbitrary order (if you want it sorted, just apply the sorted() function to it) 改用ordereddict。 【参考方案1】:

python 中的字典使用哈希作为键,它不保存顺序。因此,您不能指望键顺序 - 在运行和调用期间可能会有所不同。 如果你需要hashmap保存顺序,你应该使用ordered dict

【讨论】:

以上是关于Python 为啥list不能作为字典的key的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Python 中的字典和列表不继承 'len' 函数

为啥我不能使用“List”作为 UITableViewController 子类的类名?

什么样的类型可以作为python字典的key

Python字典和集合

Python实现字典dict

python-list