【发布时间】:2015-02-09 07:22:06
【问题描述】:
我知道以前有人问过这个问题,但我一直没能找到解决办法。
我正在尝试根据自定义字母表按字母顺序排列列表列表。
字母表是Burmese script 的表示,Sgaw Karen 使用纯 ASCII 格式。缅甸文字是一个字母表——几十个声母、几个中间变音符号和几十个可以以数千种不同方式组合的押韵,每一个都是代表一个音节的单个“字符”。 map.txt 文件有这些音节,按(克伦语/缅甸语)字母顺序列出,但以某种未知方式转换为 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
列表列表中的每个列表都具有作为其第一个元素的 Sgaw Karen 单词,以相同的方式转换为 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
我想根据alphabet 中的模式按每个列表的第一个元素(例如'u&X>'、'vk.')对word_list 进行字母排序。
我的代码还没有工作,我很难理解带有 lambda 和 for 循环的排序命令。
【问题讨论】:
-
这些模式是什么意思? (在
map.txt)?文件是什么样的? -
在什么方面它还没有工作?
alphabet中有什么内容,哪些值排序错误? -
另外,当参数将是一个单词的 list 时使用参数名称
word似乎是一件非常令人困惑的事情,并且可能是原因是您难以理解您的代码。将lambda转换为外线def也可能会有所帮助,因此您可以在不同的值上手动调用它并查看它返回的内容(这样您就不会将所有内容打包成一个巨大的表达式超出屏幕边缘;如果有帮助,您可以将 listcomp 展开为for循环,给事物起临时名称等)。 -
u&X>不在您的字母字符串中,vk.或w>ouDxD.... 也不存在时如何索引? -
我没有发布整个序列,因为它真的很长。
标签: python list sorting sorted