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的主要内容,如果未能解决你的问题,请参考以下文章