“对于dict中的项目”以随机顺序显示?

时间:2013-12-22 00:56:19

标签: python dictionary

所以我对编程很陌生,而且我正在研究一种基于文本的小游戏。无论如何,这是我的问题。

    x=1
    for items in hero.basics:
        print(x, ". ", items, sep = "")
        x += 1

和字典是,

self.basics    = {"Attack" : self.attack, "Potion" : self.potion}

所以我需要它以与实际字典相同的顺序显示,但它总是随机显示。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

这是一个问题:字典是无序的。它们不是按顺序排列的,也不是按顺序存储的。

看看这个控制台会话:

>>> d = {'a':5, 'b':6, 'c': 3}
>>> d
{'a': 5, 'c': 3, 'b': 6}

请参阅?

但是,您可以在循环键的同时对其进行排序:

for k in sorted(d):

但字典本身仍将保持未分类状态。或者,您可以查看collections.OrderedDict(这是dict的子类),以确实有一个排序字典。

答案 1 :(得分:2)

如果你真的需要一个有序的词典,那么collections.OrderedDict就是你要找的。来自文档:

  

有序词典就像常规词典一样,但它们记住了项目的插入顺序。迭代有序字典时,项目按照其键首次添加的顺序返回。