在python中打印字典的原始输入顺序

时间:2013-11-21 01:19:41

标签: python list python-2.7 dictionary printing

如何按照我设置的原始顺序打印字典?

如果我有这样的字典:

smallestCars = {'Civic96': 12.5, 'Camry98':13.2, 'Sentra98': 13.8}

我这样做:

for cars in smallestCars:
    print cars

输出:

Sentra98
Civic96
Camry98

但我想要的是:

Civic96
Camry98
Sentra98

有没有办法按顺序打印原始字典而不将其转换为列表?

5 个答案:

答案 0 :(得分:18)

常规字典没有订单。您需要使用OrderedDict模块的collections,它可以获取列表列表或元组列表,如下所示:

import collections

key_value_pairs = [('Civic86', 12.5),
                   ('Camry98', 13.2),
                   ('Sentra98', 13.8)]
smallestCars = collections.OrderedDict(key_value_pairs)

for car in smallestCars:
    print(car)

输出是:

Civic96
Camry98
Sentra98

答案 1 :(得分:2)

字典不需要保持秩序。使用OrderedDict

答案 2 :(得分:1)

当你创建字典时,python并不关心你编写元素的顺序,也不会记住创建对象后的顺序。您不能指望它(常规字典)以相同的顺序打印。更改代码结构是您在这里的最佳选择,OrderedDict是其他人所说的不错选择。

答案 3 :(得分:1)

>>> for car in sorted(smallestCars.items(),key=lambda x:x[1]):
...     print car[0]
... 
Civic96
Camry98
Sentra98

答案 4 :(得分:0)

您可以使用元组(嵌套)数组来执行此操作:

smallestCars = [['Civic86', 12.5],
               ['Camry98', 13.2],
               ['Sentra98', 13.8]]

for car, size in smallestCars:
    print(car, size)

# ('Civic86', 12.5)
# ('Camry98', 13.2)
# ('Sentra98', 13.8)