自定义排序python

mic*_*ace 6 python sorting

我有一个问题:这是由ElementTree库组成的列表列表.

   [['word1', <Element tag at b719a4cc>], ['word2', <Element tag at b719a6cc>], ['word3', <Element tag at b719a78c>], ['word4', <Element tag at b719a82c>]]
Run Code Online (Sandbox Code Playgroud)

word1..4可能包含unicode字符,即(â,ü,ç).

我想按自定义字母对这个列表列表进行排序.

我知道如何通过自定义字母排序从这里 排序python中的单词

我也知道如何从这里按键排序http://wiki.python.org/moin/HowTo/Sorting

问题是我找不到如何应用这两种方法来对我的"列表列表"进行排序的方法.

hap*_*ave 14

您的第一个链接或多或少解决了问题.你只需要让lambda函数只查看列表中的第一项:

alphabet = "zyxwvutsrqpomnlkjihgfedcba"

new_list = sorted(inputList, key=lambda word: [alphabet.index(c) for c in word[0]])
Run Code Online (Sandbox Code Playgroud)

我可能建议的一个修改,如果你要对一个相当大的列表进行排序,首先要将字母表结构更改为dict,这样索引查找会更快:

alphabet_dict = dict([(x, alphabet.index(x)) for x in alphabet)
new_list = sorted(inputList, key=lambda word: [alphabet_dict[c] for c in word[0]])
Run Code Online (Sandbox Code Playgroud)