在dict列表中的升序排序

时间:2017-12-14 17:54:56

标签: python python-3.x list sorting dictionary

如何在没有密钥匹配的情况下按升序对列表进行排序?

每个密钥都是唯一的,需要排序密钥。

输入:

[{23: (1, 5)}, 
{59: (2, 3)}, 
{45: (2, 9)}, 
{28: (3, 6)}]

输出应该是这样的(基于dict键的排序):

[{23: (1, 5)}, 
{28: (3, 6)},
{45: (2, 9)},
{59: (2, 3)}]

1 个答案:

答案 0 :(得分:2)

如果你的词典总是只有一个键,那么在Python 2.x中:

print sorted([{23: (1, 5)}, {59: (2, 3)}, {45: (2, 9)}, {28: (3, 6)}])

会给:

[{23: (1, 5)}, {28: (3, 6)}, {45: (2, 9)}, {59: (2, 3)}]

默认情况下,使用sorted()在Python 2.x中将生成正确排序的列表。

对于Python 3.x:

print(sorted([{23: (1, 5)}, {59: (2, 3)}, {45: (2, 9)}, {28: (3, 6)}], key=lambda x: next(iter(x))))

这使用lambda函数从字典中提取第一个(也是唯一的)键,并将其用作排序键。