如何对可能缺少某些我想要排序的标签的字典列表进行排序?
具体来说,这个列表来自MPD,看起来像以下......
[{'title':'Bad','album': 'XSCAPE','genre':'Pop'}, {'title': 'Down to', 'album': 'Money'}]
我想按类型排序,但请注意第二项中的字典没有关键字。
是否有内置的'Pythonic'方法,或者我是否必须构建自己的排序算法?
答案 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 '')
这会将无类型专辑放在列表的第一位(因为''
在所有其他字符串之前排序)。