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

发布于 2024-12-07 20:16:03 字数 400 浏览 0 评论 0原文

self.data = sorted(self.data, key=attrgetter('word'))

self.data 是 Word 对象的列表。 Word 对象具有“单词”、“定义”、“示例”和“难度”属性。我想按每个 Word 对象的“单词”字符串进行排序,上面的代码可以做到这一点,只是它不区分大小写。我将如何使排序不区分大小写?

我已经尝试了此处提出的另一个问题的解决方案,但是当我尝试它时,它说“TypeError:'Word'对象不可下标”。我能做些什么来让它发挥作用?

谢谢。

self.data = sorted(self.data, key=attrgetter('word'))

self.data is a list of Word objects. Word objects have 'word', 'definition', 'example' and 'difficulty' attributes. I want to sort by the 'word' strings of each Word object, and the code above does that except it's not case insensitive. How would I go about making the sorting case insensitive?

I've tried the solutions from another question asked here, but when I tried it, it said "TypeError: 'Word' object is not subscriptable". What could I do to make it work?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情愿 2024-12-14 20:16:03

您可以编写自己的 key 函数:

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

You can write your own key function:

self.data = sorted(self.data, key = lambda w: w.word.lower())
ゞ花落谁相伴 2024-12-14 20:16:03

尝试类似的方法:

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

不过,这样你可能会更好地简单地使用:

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

Try something like:

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

Though, with that you would probably be much better off simply using:

self.data = sorted(self.data, key=lambda w: w.word.lower()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文