Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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_Dictionary - Fatal编程技术网

Python 字典中键的顺序

Python 字典中键的顺序,python,dictionary,Python,Dictionary,我有一本字典 {'a': 'first', 'b': 'second'} 但是,我需要字典的顺序不同: {'b': 'second', 'a': 'first'} 最好的方法是什么?字典没有排序。因此,没有办法做到这一点 如果您有python2.7+,您可以使用collections.orderedict——在这种情况下,您可以使用.items()检索项目列表,然后将其反转,并从反转的列表中创建新的orderedict: >>> od = OrderedDict((('a'

我有一本字典

{'a': 'first', 'b': 'second'}
但是,我需要字典的顺序不同:

{'b': 'second', 'a': 'first'}

最好的方法是什么?

字典没有排序。因此,没有办法做到这一点

如果您有python2.7+,您可以使用
collections.orderedict
——在这种情况下,您可以使用
.items()
检索项目列表,然后将其反转,并从反转的列表中创建新的
orderedict

>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
>>> od
OrderedDict([('a', 'first'), ('b', 'second')])
>>> items = od.items()  # list(od.items()) in Python3
>>> items.reverse()
>>> OrderedDict(items)
OrderedDict([('b', 'second'), ('a', 'first')])

如果您使用的是较旧的python版本,您可以从字典中获得一个backport,而字典没有顺序

您可以获取键,按自己喜欢的方式排序,然后以这种方式迭代字典值

keys = myDict.keys()
keys = sorted(keys)  # order them in some way
for k in keys:
   v = myDict[k]

你不能<代码>指令s不可排序。如果您需要一个有序字典,请使用
OrderedDict

确切地说,您的示例中的两个字典是等效的。排序和有序是不同的
OrderedDict
未排序,无法手动排序,Python中没有数据结构是排序数据结构(即始终自动排序)。这就是我的意思。为了清楚起见,编辑了我的答案。@Roxy矛盾修饰法,但可以从排序列表中创建OrderedDict。问题不是:“如何创建总是排序的dict?”在Python 3.4中不起作用。行items=od.items()返回一个ItemsView对象,该对象没有reverse()函数。我想您需要
keys.sort()
sorted()
返回一个新列表,但不修改传递的对象。好的,我的错,我将阅读文档。我只是把它打印出来,碰巧是按特定的顺序打印出来的。我认为这与它的书写方式有关。就像php的数组一样,这实际上是一个好问题。我说“哦,用文档很容易回答”——事实并非如此。这一“微不足道的事实”在大多数地方似乎都是假定的知识。我能找到的最好的(在OrderedDict中,第8.3章)是“OrderedDict是一个能够记住键第一次插入顺序的dict”。啊,就是这样:“最好将字典看作是一组无序的键:值对,要求键是唯一的(在一个字典中)。”from.-1。在StackOverflow中搜索“python字典顺序”很容易找到答案。在发布到StackOverflow之前,您至少应该尝试一些操作。
dict
的可能重复项是可排序的(您始终可以对其应用
sorted
),但不会影响键的默认顺序。如果键是数字的并以增量方式插入
会怎么样,例如:1,2,3,.10
。那么在这种情况下,顺序是保留的,对吗?