Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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字典键顺序与理解_Python_Python 3.x_List_Dictionary_For Loop - Fatal编程技术网

Python字典键顺序与理解

Python字典键顺序与理解,python,python-3.x,list,dictionary,for-loop,Python,Python 3.x,List,Dictionary,For Loop,我第一次乱搞字典,有件事让我很困惑。使用两个列表创建一个新词典,关键部分的列表术语顺序似乎是错误的。这是我的密码: list1 = ["a", "b", "c", "d"] list2 = [5,3,7,3] newDict = {list1[c]: number for c, number in enumerate(list2)} print(newDict) 这给了我以下信息: {'a': 5, 'd': 3, 'c': 7, 'b': 3} 为什么会这样?当然,从列表中获取术语的“c

我第一次乱搞字典,有件事让我很困惑。使用两个列表创建一个新词典,关键部分的列表术语顺序似乎是错误的。这是我的密码:

list1 = ["a", "b", "c", "d"]
list2 = [5,3,7,3] 
newDict = {list1[c]: number for c, number in enumerate(list2)}
print(newDict)
这给了我以下信息:

{'a': 5, 'd': 3, 'c': 7, 'b': 3}
为什么会这样?当然,从列表中获取术语的“c”值是从0到更高,那么为什么不创建字母顺序相同的字典呢


谢谢。

为了提高效率,传统的python字典是无序的。如果您需要订单,则需要
OrderedDict

>>> from collections import OrderedDict
>>> newDict = OrderedDict((list1[c], number) for c, number in enumerate(list2))
>>> print(newDict)
OrderedDict([('a', 5), ('b', 3), ('c', 7), ('d', 3)])

,将对使用新算法实现的普通python字典进行排序。在此之前,如果需要排序,请使用
OrderedDict

为了提高效率,传统的python字典是无序的。如果您需要订单,则需要
OrderedDict

>>> from collections import OrderedDict
>>> newDict = OrderedDict((list1[c], number) for c, number in enumerate(list2))
>>> print(newDict)
OrderedDict([('a', 5), ('b', 3), ('c', 7), ('d', 3)])

,将对使用新算法实现的普通python字典进行排序。在此之前,如果您需要顺序,请使用
orderedict

Python字典不保留其顺序,但还有另一种数据类型可以保留其顺序:collections模块中的OrderedDict。

Python字典不保留其顺序,但还有另一种数据类型可以保留其顺序:OrderedDict,来自集合模块。

字典是无序的。事实上,如果您在不同的计算机上运行程序,您可能会得到不同的密钥顺序。这是python内置字典的一个有意的特性


要了解原因,请看一看。

字典是无序的。事实上,如果您在不同的计算机上运行程序,您可能会得到不同的密钥顺序。这是python内置字典的一个有意的特性


要了解原因,请看一看。

字典是无序的数据结构。请注意,您也可以使用
dict(zip(list1,list2))
版本之前的
3.6
,通常我会这样做,但这是为了物理作业,不希望我们使用尚未正式教授的内容。这就是我为什么要用字典的原因。不过还是要谢谢你。@brogrammar从技术上讲,在Python3.6中,字典保留插入顺序这一事实是一个实现细节。它将是>=3.7版规范的一部分。字典是无序的数据结构。注意,你也可以使用
dict(zip(list1,list2))
3.6版之前,我通常会这样做,但这是为了一个物理作业,它不希望我们使用尚未正式教授的内容。这就是我为什么要用字典的原因。不过还是要谢谢你。@brogrammar从技术上讲,在Python3.6中,字典保留插入顺序这一事实是一个实现细节。它将成为>=3.7版本中规范的一部分,您为什么认为他们需要它?他们只是问为什么它不能维护秩序,而不是说他们想维护秩序。@StefanPochmann在人类行为的正常规则下,OP不会花时间询问秩序,除非出于某种原因,它对他很重要。你为什么认为他们需要秩序?他们只是问为什么它不能维护秩序,而不是说他们想维护秩序。@StefanPochmann根据人类行为的正常规则,OP不会花时间询问秩序,除非出于某种原因,它对他很重要。