【问题标题】:Python: How to sort a list of objects using attrgetter with case insensitivityPython:如何使用不区分大小写的 attrgetter 对对象列表进行排序
【发布时间】:2011-12-01 03:55:37
【问题描述】:
self.data = sorted(self.data, key=attrgetter('word'))

self.data 是 Word 对象的列表。 Word 对象具有“word”、“definition”、“example”和“difficulty”属性。我想按每个 Word 对象的“单词”字符串排序,上面的代码就是这样做的,只是它不区分大小写。我将如何使排序不区分大小写?

我已经尝试了另一个问题here 的解决方案,但是当我尝试它时,它说“TypeError: 'Word' object is not subscriptable”。我该怎么做才能让它发挥作用?

谢谢。

【问题讨论】:

    标签: python key case-insensitive attr sorted


    【解决方案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())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 2013-02-11
        • 2016-10-17
        • 1970-01-01
        • 2011-01-21
        • 2015-01-18
        • 2018-01-11
        相关资源
        最近更新 更多