【发布时间】:2016-05-20 20:37:49
【问题描述】:
我正在用 Python 编写一个可以对我的列表进行排序的函数。问题是我不希望它与sorted() 方法使用的顺序相同。我尝试使用sorting() 方法,但是当我对这个字符串进行排序时,我会这样:
0123456789abcdefghijklmnopqrstuvwxyzßàáäåæçèéêìíîñòóôöøùúüžα
我希望它的顺序是:
0123456789aàáäåæbcçdeèéêfghiìíîjklmnñoòóôöøpqrsßtuùúüvwxyzžα
现在,我有一个这样的列表(示例):
list = ['x', 'h', 'ê', 'ø', '5', 'ž', 'z', 'α', '3', '1']
我想对它进行排序。如果我使用sorted() 方法,它看起来像这样:
['1', '3', '5', 'h', 'x', 'z', 'ê', 'ø', 'ž', 'α']
但我希望它与我之前给出的字符串的顺序相同。
【问题讨论】:
-
参见python tutorial on sorting,尤其是
key函数的第二个。你想要像key = lambda s: reference.index(s)这样的东西,其中引用是你在上面列出的字符串,并具有正确的排序顺序。 -
您的答案的第一部分在于
sorted的key参数。第二部分是描述该关键功能。显而易见的方法是硬编码的dict将“a”的所有变体映射到'a'。自己想出这个可能很难,因为有很多 Unicode 字符是 ASCII 字母的变体,比如“a”。 (“带有组合矢量箭头的 a”算吗?)这样的函数可能已经在某个库中可用。 -
没有。这些是我唯一需要使用的字符!
-
@KevinJ.Chase 我看不出这个问题有两个“部分”。问题是如何实现自定义排序顺序(基于要在提供的字符串中排序的每个对象的位置)。我选择了我的副本,因为该问题本质上是基于自定义顺序(基于提供的列表中的位置)排序的,抽象地相同的问题和解决方案可以在这种情况下使用,只需最少的修改。
标签: python list sorting character