我知道這已被問過,但我一直無法找到解決方案。Python:自定義排序列表
我試圖根據自定義字母表將列表的列表按字母順序排列。
該字母表是Burmese script的一種表示形式,由Sgaw Karen以純ASCII使用。緬甸語字母是一個字母音節 - 幾十個發音,一些中音符號和幾十個押韻,可以以幾千種不同的方式組合,每一種都是代表一個音節的單個「字符」。 map.txt
文件包含以(Karen/Burmese)字母順序列出的這些音節,但以某種未知方式轉換爲ASCII符號,因此第一個字符是u>m;.Rf
而不是က
或[ka̰]
。例如:
u>m;.Rf ug>m;.Rf uH>m;.Rf uX>m;.Rf uk>m;.Rf ul>m;.Rf uh>m;.Rf uJ>m;.Rf ud>m;.Rf uD>m;.Rf u->m;.Rf uj>m;.Rf us>m;.Rf uV>m;.Rf uG>m;.Rf uU>m;.Rf uS>m;.Rf u+>m;.Rf uO>m;.Rf uF>m;.Rf
c>m;.Rf cg>m;.Rf cH>m;.Rf cX>m;.Rf ck>m;.Rf cl>m;.Rf ch>m;.Rf cJ>m;.Rf cd>m;.Rf cD>m;.Rf c->m;.Rf cj>m;.Rf cs>m;.Rf cV>m;.Rf cG>m;.Rf cU>m;.Rf cS>m;.Rf c+>m;.Rf cO>m;.Rf cF>m;.Rf
在列表的列表中的每個列表具有作爲其第一元件,斯高卡倫的字轉換成ASCII碼的符號以相同的方式。例如:
[['u&X>', 'n', 'yard'], ['vk.', 'n', 'yarn'], ['w>ouDxD.', 'n', 'yawn'], ['w>wuDxD.', 'n', 'yawn']]
這是我到目前爲止有:
def alphabetize(word_list):
alphabet = ''.join([line.rstrip() for line in open('map.txt', 'rb')])
word_list = sorted(word_list, key=lambda word: [alphabet.index(c) for c in word[0]])
return word_list
我想每個列表的第一個元素按字母順序排列word_list
(如 'U & X>' ,'vk。'),根據alphabet
中的模式。
我的代碼還沒有工作,我正在努力理解lambda和for循環的排序命令。
是什麼模式呢? (在'map.txt'中)?這個文件是什麼樣的? – 2014-12-10 22:43:07
它以何種方式未能正常工作? 「字母表」中有哪些內容,以及哪些值排序錯誤? – abarnert 2014-12-10 22:43:51
此外,使用參數名'word'當參數將是詞的_list_似乎是一個非常令人困惑的事情,而可能是你在努力理解你的代碼的部分原因。它也可能有助於將'lambda'變成一個超行的'def',所以你可以用不同的值手動調用它,並且看看它返回的結果(只是你沒有把所有的東西都打包成一個巨大的表達式它在屏幕邊緣運行;您可以將listcomp擴展爲'for'循環,給出臨時名稱等,如果有幫助的話)。 – abarnert 2014-12-10 22:45:55