Python:如何使用attrgetter进行不区分大小写的对象列表排序

1 投票
2 回答
2720 浏览
提问于 2025-04-17 03:41
self.data = sorted(self.data, key=attrgetter('word'))

self.data 是一个包含 Word 对象的列表。每个 Word 对象都有 'word'(单词)、'definition'(定义)、'example'(例子)和 'difficulty'(难度)这些属性。我想根据每个 Word 对象的 'word' 字符串进行排序,以上的代码可以做到这一点,但它对大小写不敏感。请问我该如何让排序不区分大小写呢?

我试过了另一个问题中的解决方案,在这里,但是当我尝试时,它显示“TypeError: 'Word' object is not subscriptable”(类型错误:'Word' 对象不可下标访问)。我该怎么做才能让它正常工作呢?

谢谢。

2 个回答

1

试试下面这个:

self.data = sorted(self.data, key=lambda w: attrgetter('word')(w).lower())

不过,使用这个可能会更好:

self.data = sorted(self.data, key=lambda w: w.word.lower()
2

你可以自己写一个 key 函数:

self.data = sorted(self.data, key = lambda w: w.word.lower())

撰写回答