Python排序列表,一些标签可能会丢失

时间:2016-12-08 00:30:51

标签: python list sorting dictionary

如何对可能缺少某些我想要排序的标签的字典列表进行排序?

具体来说,这个列表来自MPD,看起来像以下......

[{'title':'Bad','album': 'XSCAPE','genre':'Pop'}, {'title': 'Down to', 'album': 'Money'}]

我想按类型排序,但请注意第二项中的字典没有关键字。

是否有内置的'Pythonic'方法,或者我是否必须构建自己的排序算法?

2 个答案:

答案 0 :(得分:10)

使用sorted函数和.get方法:

l = [{'title':'Bad','album': 'XSCAPE','genre':'Pop'}, {'title': 'Down to', 'album': 'Money'}]
sorted_l = sorted(l, key=lambda x: x.get("genre", ""))

答案 1 :(得分:2)

您可以使用sorted,并指定关键功能:

output = sorted(input, key=lambda album: album['genre'] if 'genre' in album else '')

这会将无类型专辑放在列表的第一位(因为''在所有其他字符串之前排序)。