如何在Python字典中保留项目顺序?

时间:2015-10-30 20:34:05

标签: python arrays list dictionary

我正在编写一个脚本,其中计算机将与自己玩一场战争游戏。我需要脚本只返回列表中第一个条目的值:

注意:这只是一个例子

    test = {'hey':1, 'hi':2, 'hello':3, 'greetings':4, 'goodmorning':5,   'night':6}

    for a in test:
        print test[a]

    #this returns
    1
    2
    3
    4
    5
    6

我希望这个脚本只返回第一个条目的值。

2 个答案:

答案 0 :(得分:2)

由于字典是无序的,并且如果您依赖于使用字典,但是顺序对您很重要,则应考虑使用集合中的OrderedDict。这将根据插入保留字典的顺序。因此,如果您输入a, v, b,它将按此顺序排列。

演示:

>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> d['a'] = 1
>>> d['v'] = 1
>>> d['b'] = 1
>>> d
OrderedDict([('a', 1), ('v', 1), ('b', 1)])

根据要求获取第一个值,仅获取第一个条目:

d.items()[0][1]

答案 1 :(得分:2)

内置字典不是有序集合,因为您不能通过索引位置(即第1个,第2个等)访问

相反,您可以通过(例如test['hey']test['hi']等)访问它们。例如:

>>> test = { 'hey':1, 'hi':2, 'hello':3 }
>>> test[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 0
>>> test['hi']
2

您应该查看使用词典的Python docs

如果您想通过 position (即索引)访问元素,那么您应该考虑使用列表或元组。

如果您希望在使用字典时保留顺序,则可能需要查看OrderedDictdocs

引用文档:

  

OrderedDict是一个记住键的顺序的dict   最先插入。如果新条目覆盖现有条目,则   原始插入位置保持不变。删除条目和   重新插入它将把它移到最后。

有关使用OrderedDict的好例子,请参阅idjaw's post