Python 2.7 按顺序迭代字典并打印值

Python 2.7 按顺序迭代字典并打印值,python-2.7,dictionary,Python 2.7,Dictionary,运行此代码时的输出如下所示: prices = { "banana": 4, "apple": 2, "orange": 1.5, "pear": 3 } stock = { "banana": 6, "apple": 0, "orange": 32, "pear": 15 } for key in stock: print key print 'prince: %s' % prices[key] pri

运行此代码时的输出如下所示:

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

for key in stock:
    print key
    print 'prince: %s' % prices[key]
    print 'stock: %s' % stock[key]
orange
prince: 1.5
stock: 32
pear
prince: 3
stock: 15
banana
prince: 4
stock: 6
apple
prince: 2
stock: 0
为什么不按照元素在字典中出现的顺序打印?例如,为什么不先打印“香蕉”,如下所示:

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

for key in stock:
    print key
    print 'prince: %s' % prices[key]
    print 'stock: %s' % stock[key]
orange
prince: 1.5
stock: 32
pear
prince: 3
stock: 15
banana
prince: 4
stock: 6
apple
prince: 2
stock: 0

Python字典是无序的,这意味着它们不会记住您将元素放入的顺序。如果您正在查找有关词典的更多信息,则有一些答案可能对您有所帮助


您可以使用创建有序字典。字典是一组无序的键:值对。他们没有秩序的概念

如果您想要一本有序的词典,可以查看OrderedDict。有序词典与常规词典一样,但它们记住插入项的顺序。当在一个有序字典上迭代时,这些项将按照它们的键第一次添加的顺序返回

见:

收藏,订购


字典没有顺序。字典的意义在于通过程序员提供的一个键来获取条目,所以维护顺序是没有意义的;只要它是快速和容易获取项目的关键

有一种方法可以记住钥匙插入的顺序

对于您的情况,最好重新排列您的数据:

banana
price: 4
stock: 6
也可以只使用tuple,如下所示:

stock = {'banana': {'price': 4, 'stock': 6}, 'apple': {'price': 2, 'stock': 0}}
for fruit, details in stock.iteritems():
    print('{0}'.format(fruit))
    print('Price: {0.price}'.format(details))
    print('Stock: {0.stock}'.format(details))

因为字典是不按顺序排列的。一位基督徒说,如果你想要一个排序的列表,你必须调用
来获得key-in-sorted(stock.keys()
@mtik00,这似乎产生了字母排序,而实际上OP似乎只是想保持它们与在ah中添加的顺序相同,这是一个好发现@nbrooks。