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不会花时间询问秩序,除非出于某种原因,它对他很重要。