我有一个字典列表,其中包含一些包含艺术家及其专辑的字符串(从Spotify获取)。我想首先按艺术家排序,然后按专辑排序。但是我想使用区域设置感知排序(在我的例子中是德语)。
我发现我可以用多个键对字典列表进行排序,如下所示:
somelist.sort(key=lambda k: (k['artist'].lower(), k["album"].lower()))
.lower
因为我想要一个不区分大小写的排序。
这适用于英语命名艺术家和专辑,但不适用于非英语。我发现,对于区域设置感知排序,我可以使用somelist.sort(key=locale.strxfrm)
。
我不明白:如何组合区域设置和多个键排序?
答案 0 :(得分:2)
为什么不组成这两个?
def normalizeSortString(s):
return local.strxfrm(s).lower()
def getSortKey(k):
return (normalizeSortString(k['artist']), normalizeSortString(k["album"]))
somelist.sort(key=getSortKey)