【发布时间】:2021-10-27 12:46:09
【问题描述】:
我有一个看起来像这样的python dict:
file_dict = {'a.txt' : <#:text_object>, 'b.txt': <#:text_object>, 'c.txt': <#:text_object>}
值 text_object 是一个包含一堆关于文件的分析数据的对象。就是这样的物体……
class text_object:
#...a bunch of methods and setters...
def get_word_count(self):
return self.word_count #integer value
这些对象在一个字典中,这样我就可以通过它们的文件名快速找到特定的文件及其对应的数据。我想按 word_count 顺序对 file_dict 进行排序,以便输出字数最少的对象,以帮助发现数据收集过程中的异常情况。
如何根据存储在其中的 text_object.get_word_count() 类中的值对 file_dict 进行排序?
【问题讨论】:
-
实现
__lt__方法以使python排序工具工作。我认为这是stackoverflow.com/questions/7152497/… 的重复 -
链接为重复的问题是有问题的。当
sorted可以接受key参数时,为什么要实现__lt__? -
我也不同意关闭,因为为
text_object类实现__lt__仍然无助于对字典本身进行排序。 -
@stef - 当您控制类的定义并希望使其可排序时,
__lt_比在您想要排序的任何地方重复排序逻辑要好。除了排序之外,它还可以对对象进行其他比较。我认为 OP 希望.get_word_count()成为该类的规范排序值。如果事实证明 OP 在这种特殊情况下只是想要这种排序行为,他可以在 cmets 中提到这一点,然后我们可以删除 dup。 -
伙计们,我已经阅读了重复的答案,但实际上并没有太多的答案。我不了解您的标准,因为其他相关问题甚至没有在他们的问题中提供可靠的代码示例。我让管理员删除了一个问题,因为问题中没有代码。如何从替代答案中实现 lt 方法也不是很清楚。我认为我的问题会增加 Stack Overflow 的价值,所以请您考虑回答。
标签: python python-3.x sorting