如何使用多个属性和unicode字符串对python字典进行排序

时间:2016-01-02 19:32:03

标签: python sorting dictionary unicode

我有一个字典列表,其中包含一些包含艺术家及其专辑的字符串(从Spotify获取)。我想首先按艺术家排序,然后按专辑排序。但是我想使用区域设置感知排序(在我的例子中是德语)。

我发现我可以用多个键对字典列表进行排序,如下所示:

somelist.sort(key=lambda k: (k['artist'].lower(), k["album"].lower()))

.lower因为我想要一个不区分大小写的排序。

这适用于英语命名艺术家和专辑,但不适用于非英语。我发现,对于区域设置感知排序,我可以使用somelist.sort(key=locale.strxfrm)

我不明白:如何组合区域设置和多个键排序?

1 个答案:

答案 0 :(得分:2)

为什么不组成这两个?

def normalizeSortString(s):
    return local.strxfrm(s).lower()

def getSortKey(k):
    return (normalizeSortString(k['artist']), normalizeSortString(k["album"]))

somelist.sort(key=getSortKey)