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
为什么不按字母中元素出现的顺序打印?例如,为什么不首先打印'banana',如下所示:
banana
price: 4
stock: 6
答案 0 :(得分:1)
Python词典是无序的,这意味着他们不会记住您放入元素的顺序。This post有一些答案可能对您有所帮助,如果您正在寻找有关词典的更多信息。
您可以使用OrderedDict datatype创建一个有序的字典等效项。
答案 1 :(得分:1)
字典没有订单。字典的要点是通过程序员提供的密钥来获取项目,因此维护顺序没有意义;只要通过密钥快速轻松地获取项目。
OrderedDict
会记住按键的插入顺序。
对于您的情况,最好重新安排数据:
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))
您也可以像这样使用元组:
stock = {'banana': (4, 6), 'apple': (2, 0)}
for fruit, details in stock.iteritems():
price, stock = details
print('{0}'.format(fruit))
print('Price: {0}'.format(price))
print('Stock: {0}'.format(stock))
答案 2 :(得分:0)
字典是一组无序的键:值对。他们没有秩序的概念。
如果您想要有序字典,可以查看OrderedDict。有序词典就像常规词典一样,但它们记住了项目的插入顺序。迭代有序字典时,项目按照其键首次添加的顺序返回。
请参阅:https://docs.python.org/2/library/collections.html
collections.OrderedDict