如何对对象中包含的列表进行排序
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(...)
以上是关于如何对对象中包含的列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章