Python 为什么字典看起来是颠倒的?

Python 为什么字典看起来是颠倒的?,python,dictionary,Python,Dictionary,为什么python中的词典看起来是相反的 >>> a = {'one': '1', 'two': '2', 'three': '3', 'four': '4'} >>> a {'four': '4', 'three': '3', 'two': '2', 'one': '1'} 如何解决这个问题?python中的字典(以及通常的哈希表)是无序的。在python中,您可以对键使用sort()方法对它们进行排序。python中的字典(以及通常的哈希表)是无序的。在

为什么python中的词典看起来是相反的

>>> a = {'one': '1', 'two': '2', 'three': '3', 'four': '4'}
>>> a
{'four': '4', 'three': '3', 'two': '2', 'one': '1'}
如何解决这个问题?

python中的字典(以及通常的哈希表)是无序的。在python中,您可以对键使用
sort()
方法对它们进行排序。

python中的字典(以及通常的哈希表)是无序的。在python中,您可以对键使用
sort()
方法对它们进行排序。

您希望的“标准顺序”是什么?它非常依赖于应用程序。python字典无论如何都不能保证密钥顺序

在任何情况下,您都可以按自己的方式迭代字典键()。

您希望的“标准顺序”是什么?它非常依赖于应用程序。python字典无论如何都不能保证密钥顺序


在任何情况下,您都可以按自己的方式迭代字典键()。

字典没有内在顺序。您必须滚动自己的有序dict实现、使用或使用

字典没有固有的顺序。您必须滚动自己的有序dict实现、使用或使用

现在您知道dict是无序的,下面是如何将它们转换为可以排序的列表

按键排序

>>> sorted(a.items())
[('four', '4'), ('one', '1'), ('three', '3'), ('two', '2')]
按值排序

>>> from operator import itemgetter
>>> sorted(a.items(),key=itemgetter(1))
[('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')]
>>> 

现在您知道了dict是无序的,下面是如何将它们转换为可以排序的列表

按键排序

>>> sorted(a.items())
[('four', '4'), ('one', '1'), ('three', '3'), ('two', '2')]
按值排序

>>> from operator import itemgetter
>>> sorted(a.items(),key=itemgetter(1))
[('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')]
>>> 
从:

最好把字典想象成一本书 一组无序的键:值对

和(关于dict.items):

CPython实现细节:关键 和值以任意形式列出 非随机的顺序是变化的 跨Python实现,以及 这取决于词典的历史 插入和删除

因此,如果需要按特定顺序处理dict,请对键或值进行排序,例如:

>>> sorted(a.keys())
['four', 'one', 'three', 'two']
>>> sorted(a.values())
['1', '2', '3', '4']
从:

最好把字典想象成一本书 一组无序的键:值对

和(关于dict.items):

CPython实现细节:关键 和值以任意形式列出 非随机的顺序是变化的 跨Python实现,以及 这取决于词典的历史 插入和删除

因此,如果需要按特定顺序处理dict,请对键或值进行排序,例如:

>>> sorted(a.keys())
['four', 'one', 'three', 'two']
>>> sorted(a.values())
['1', '2', '3', '4']

Python3.1有一个
OrderedDict

>>> from collections import OrderedDict
>>> o=OrderedDict([('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')])
>>> o
OrderedDict([('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')])
>>> for k,v in o.items():
...  print (k,v)
... 
one 1
two 2
three 3
four 4

Python3.1有一个
OrderedDict

>>> from collections import OrderedDict
>>> o=OrderedDict([('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')])
>>> o
OrderedDict([('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')])
>>> for k,v in o.items():
...  print (k,v)
... 
one 1
two 2
three 3
four 4

@myfreeweb:有两个链接,我可以访问它们@myfreeweb:有两个链接,我可以访问它们。“修复”是什么意思?您喜欢什么样的顺序?fix是什么意思?你想要点什么?太棒了。但是我在Python2上没有使用有序dicts就完成了这项工作。Orderedicts中的项是按项添加到字典中时的顺序排序的,而不是按键或项排序的。因此,如果您添加了无序的项目,并且OrderedDict没有帮助:-)太棒了。但是我在Python2上没有使用有序dicts就完成了这项工作。Orderedicts中的项是按项添加到字典中时的顺序排序的,而不是按键或项排序的。因此,如果您添加了无序的项目,并且OrderedDict没有帮助:-)