Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字典-为什么keys()、values()返回列表而不是集合?_Python_List_Dictionary_Unordered - Fatal编程技术网

Python字典-为什么keys()、values()返回列表而不是集合?

Python字典-为什么keys()、values()返回列表而不是集合?,python,list,dictionary,unordered,Python,List,Dictionary,Unordered,从讨论中我了解到,字典通常是不有序的,至少不可靠。那么,为什么dictionary方法keys()、values()、items()返回有序列表而不是无序集呢?这只是一个方便的问题还是有一些潜在的原因?它们不返回列表或集合;他们返回意见。只要值是可散列的,关键视图和项目视图都设置为,但值视图不能设置为,因为可能存在重复的值 在Python 3之前,它们返回列表,但这些方法早于集合的引入,虽然键/值/项至少在1.0之前就已经存在了。基于,直到Python 2.3建立字典类型之后,才引入集合模块。重

从讨论中我了解到,字典通常是不有序的,至少不可靠。那么,为什么dictionary方法keys()、values()、items()返回有序列表而不是无序集呢?这只是一个方便的问题还是有一些潜在的原因?

它们不返回列表或集合;他们返回意见。只要值是可散列的,关键视图和项目视图都设置为,但值视图不能设置为,因为可能存在重复的值

在Python 3之前,它们返回列表,但这些方法早于集合的引入,虽然
/
/
至少在1.0之前就已经存在了。

基于,直到Python 2.3建立字典类型之后,才引入
集合
模块。重新定义
keys()
values()
等的工作方式将是一个突破性的改变


在Python3中,这些函数返回的是视图对象而不是列表,虽然列表是可编辑的,但并不象有序列表那样建议显式排序。

首先,
值不保证唯一。
字典键和值(如果单独迭代)总是以相同的顺序。为其中任何一个使用集合都会使这变得不可能。注意,在Python 3.7+中,字典应该被认为是有序的。感谢所有的答案,这真的很有帮助。