如何对对象中包含的列表进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对对象中包含的列表进行排序相关的知识,希望对你有一定的参考价值。

任务是使用以下代码作为起点编写排序算法的代码。问题是我似乎无法弄清楚我如何开始代码,我不是在寻找完整的解决方案,而只是寻找如何对实际上是对象一部分的元组列表进行排序的技术。当我尝试遍历列表时说无法遍历一个对象,我会收到错误消息。

class LinkedList:
    def __init__(self, data):
        self.label = data[0][0]
        self.value = data[0][1]
        self.tail = None if (len(data) == 1) else LinkedList(data[1:])

countries = LinkedList([("Ukraine",41879904),("Brunei",442400),("Christmas Island (Australia)",1928)
答案

要遍历此列表,您需要不断获取对象的尾部引用:

class LinkedList:
  def __init__(self, data):
    self.label = data[0][0]
    self.value = data[0][1]
    self.tail = None if (len(data) == 1) else LinkedList(data[1:])

countries = LinkedList([("Ukraine",41879904),("Brunei",442400),("Christmas Island (Australia)",1928)])
nextObj = countries

while nextObj is not None:
  print(nextObj.label, nextObj.value)
  nextObj = nextObj.tail

print("done!")

输出:

Ukraine 41879904
Brunei 442400
Christmas Island (Australia) 1928
done!
另一答案

类装饰器

@total_ordering
class LinkedList(object):
    def __init__(self, data):
        self.label = data[0][0]
        self.value = data[0][1]
        ...

  def __lt__(self, other):
    return self.label < other.value

my_list = [LinkedList(data0),LinkedList(data1),LinkedList(data2)]

new_list=my_list.sorted()
for obj in new_list:
    print(...)

以上是关于如何对对象中包含的列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 groupby 对象中包含的多个列表并将该组列表中的每个值的计数相加

dplyr:如何以编程方式完整连接列表列表中包含的数据帧?

是否有代码对列中包含的相似单词进行分组

如何对2个LIST中的元素进行比较

在列表中包含的值中定义固定位置

查找给定字符串中包含的字谜