如何按自定义字母表中的字母顺序对单词列表进行排序?

问题描述 投票:0回答:1

我正在尝试创建一种语言并按字母顺序对其中的单词进行排序,我正在为其创建一个Python脚本,因为我自己无法让事情变得简单。我需要用字母排序:

"æǽaàbdyýeéfgiíʒklmnŋΩΏoóøǿɤprʃsþðtʊuúʌvɯjz"

我尝试了这篇文章中的最佳答案

def sortA(l, alphabet="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"):
    returnVal = sorted(l, key=lambda word: [alphabet.index(c) for c in word])
    return returnVal


keys = sortA(keys, "æǽaàbdyýeéfgiíʒklmnŋΩΏoóøǿɤprʃsþðtʊuúʌvɯjz")

VSC 说

Exception has occurred: ValueError
substring not found
  File "filepath", line 13, in <lambda>
    returnVal = sorted(l, key=lambda word: [alphabet.index(c) for c in word])
                                            ^^^^^^^^^^^^^^^^^
python sorting
1个回答
0
投票

您的错误可能是因为

keys
中的某个字符不在
alphabet
中。

您可以在

sortA
中添加处理:

def sortA(l, alphabet="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"):
    def get_value(char):
        if char in alphabet:
            return alphabet.index(char)
        else:
            return len(alphabet)
    returnVal = sorted(l, key=lambda word: [get_value(c) for c in word])
    return returnVal

Ofc,你总是可以打印

keys
并查看它的值是否不是它应该的值..

© www.soinside.com 2019 - 2024. All rights reserved.