Python 如何使字典在压缩后保持有序

Python 如何使字典在压缩后保持有序,python,Python,当只有大约1、2或3个元素时,字典会正确地保持顺序 >>> a = ["dorian", "strawberry", "apple"] >>> b = ["sweet", "delicious", "tasty"] >>> c = dict(zip(a, b)) >>> c {'dorian': 'sweet', 'strawberry': 'delicious', 'apple': 'tasty'} 但是当有超过3个元素

当只有大约1、2或3个元素时,字典会正确地保持顺序

>>> a = ["dorian", "strawberry", "apple"]
>>> b = ["sweet", "delicious", "tasty"]
>>> c = dict(zip(a, b))
>>> c
{'dorian': 'sweet', 'strawberry': 'delicious', 'apple': 'tasty'}
但是当有超过3个元素时,顺序就被打破了

>>> a = ["dorian", "strawberry", "apple", "coconut"]
>>> b = ["sweet", "delicious", "tasty", "yum"]
>>> c = dict(zip(a, b))
>>> c
{'strawberry': 'delicious', 'coconut': 'yum', 'dorian': 'sweet', 'apple': 'tasty'}

谁能解释一下为什么会这样?谢谢

Python字典不维护任何顺序,您应该使用它

In [7]: from collections import OrderedDict as od

In [8]: a = ["dorian", "strawberry", "apple"]

In [9]: b = ["sweet", "delicious", "tasty"]

In [10]: dic=od(zip(a,b))

In [11]: dic
Out[11]: OrderedDict([('dorian', 'sweet'), ('strawberry', 'delicious'), ('apple', 'tasty')])

Python字典不维护任何顺序,您应该使用它

In [7]: from collections import OrderedDict as od

In [8]: a = ["dorian", "strawberry", "apple"]

In [9]: b = ["sweet", "delicious", "tasty"]

In [10]: dic=od(zip(a,b))

In [11]: dic
Out[11]: OrderedDict([('dorian', 'sweet'), ('strawberry', 'delicious'), ('apple', 'tasty')])
蟒蛇。改用

蟒蛇。改用


字典是地图数据结构。你永远不能保证秩序。牺牲这一点,可以提高底层实现的速度。

字典是地图数据结构。你永远不能保证秩序。牺牲这一点可以提高底层实现的速度。

字典不保留顺序字典不保留顺序我很想-1这一点,因为在不牺牲那么多速度的情况下,很有可能在映射中做出顺序保证。(也就是说,如果你把值保存在一个双链表中,你可以在插入/删除时以恒定的开销维持顺序。或者在树中保持日志(n)开销,并保持字典按键或值排序。)我有点倾向于-1这一个,因为它很可能在映射中保证排序,在不牺牲速度的情况下。(也就是说,如果将值保存在双链接列表中,则可以在插入/删除时以恒定的开销维持顺序。或者在树中保留日志(n)开销,并保持字典按键或值排序。)