0
假设我有一类叫做主题:正确的属性排序对象的列表,与一捻
class Subject():
def __init__(self, name, longName):
self.name = name
self.long_name = longName
def __repr__(self):
return self.long_name + "(" + self.name + ")"
在我的代码,我创建了一堆这些对象,指定名称和LONG_NAME,然后排序列表按字母顺序与
sorted(subjects, key=attrgetter("long_name"))
,我得到看起来像这样的列表:
[BETRIEBSWIRTSCHAFT (BW), MATHEMATIK (MA), WIRTSCHAFTSINFORMATIK (WI), WIRTSCHAFTSLEHRE (WW), fio (fio), ÜBUNGSRATHAUS (ÜR)]
显然,这是不正确的。如何正确地按属性按字母顺序排序对象列表,并考虑大写/小写字母和unicode字符(如元音变音符号)?
最后,名单应该是这样的:
[BETRIEBSWIRTSCHAFT (BW), fio (fio), MATHEMATIK (MA), ÜBUNGSRATHAUS (ÜR), WIRTSCHAFTSINFORMATIK (WI), WIRTSCHAFTSLEHRE(WW)]
虽然这解决了大写/小写排序的问题,但它仍不考虑列表中的最后一项。有任何想法吗? – 2014-10-26 16:51:56
你是对的,最后一个元素不在正确的位置。我做了一些挖掘,并且这个主题已经在SO上得到了答案http://stackoverflow.com/questions/1097908/how-do-i-sort-unicode-strings-alphabetically-in-python – 2014-10-26 16:59:10
我刚刚花了三个小时设置在两台不同的机器上安装ICU4C和PyICU,但这是完全值得的。谢谢! :D – 2014-10-26 21:56:19