【问题标题】:Python 3.3: Sorting a List of Objects/MethodsPython 3.3:对对象/方法列表进行排序
【发布时间】:2014-03-03 19:22:26
【问题描述】:

抱歉,我不确定 Python 的术语。

我有一个名为“Word”的类,它的作用是将给定文本文件中的所有单词计数并存储为元组,即

self.listName = [('world', 2), ('hello', 3), ('stack', 1), ('overflow', 2)] 

其中索引 0 的项目是单词,索引 1 是出现次数。这存储在“单词”类中。有什么办法可以使用

listName.sort() 

sorted(listName, key=lambda Word: Word[0])

给我以下列表:

self.listName = [('hello', 3), ('overflow', 2), ('stack', 1), ('world', 2)] 

我想尝试使用它而不是尝试创建一个新的排序功能(我相信我可以做到,但我没有成功)?

我想我还应该提到 List 和 Word 类在不同的类中(如果有区别的话)。

提前致谢!

【问题讨论】:

  • 我无法想象你的类结构是什么样的。

标签: python list class methods


【解决方案1】:

您根本不需要指定key

listName = [('world', 2), ('hello', 3), ('stack', 1), ('overflow', 2)]
print(sorted(listName))

输出

[('hello', 3), ('overflow', 2), ('stack', 1), ('world', 2)]

有关如何完成此比较的更多信息,请查看此文档页面Comparing Sequences and Other Types

【讨论】:

    【解决方案2】:

    要对列表进行排序,

    listname.sort(key=lambda x:x[0])
    

    应该按单词的字母顺序对列表进行排序。

    另外,您可能需要查找

    collections.counter
    

    因为它的目的与您正在做的事情相似

    【讨论】:

    • 我会查一下,但这是我在单词类中对信息进行排序的方式
    • Re: Collections.counter 我实际上应该比较 hashtable 方法和 list 方法来做这种事情。
    【解决方案3】:

    我实际上让它工作了,我需要一个“override 方法”(? - 我需要定义 __lt__ 来比较 Word() 的 str 元素),但因为我收到了这个错误: TypeError:不可排序的类型:str()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多