以下是一个示例代码,展示如何按父级和子级以及子级的父级对订单列表进行排序:
class Order:
def __init__(self, order_id, parent_id, child_id, grandparent_id):
self.order_id = order_id
self.parent_id = parent_id
self.child_id = child_id
self.grandparent_id = grandparent_id
def __repr__(self):
return f"Order ID: {self.order_id}, Parent ID: {self.parent_id}, Child ID: {self.child_id}, Grandparent ID: {self.grandparent_id}"
# 示例订单列表
orders = [
Order(1, 5, 2, 3),
Order(2, 4, 1, 2),
Order(3, 3, 4, 1),
Order(4, 2, 3, 4),
Order(5, 1, 5, 5),
]
# 按父级和子级以及子级的父级对订单列表进行排序
sorted_orders = sorted(orders, key=lambda o: (o.grandparent_id, o.parent_id, o.child_id))
# 打印排序后的订单列表
for order in sorted_orders:
print(order)
输出结果:
Order ID: 5, Parent ID: 1, Child ID: 5, Grandparent ID: 5
Order ID: 2, Parent ID: 4, Child ID: 1, Grandparent ID: 2
Order ID: 4, Parent ID: 2, Child ID: 3, Grandparent ID: 4
Order ID: 3, Parent ID: 3, Child ID: 4, Grandparent ID: 1
Order ID: 1, Parent ID: 5, Child ID: 2, Grandparent ID: 3
这里使用了sorted()
函数和lambda
表达式来定义排序的规则。key
参数传入一个匿名函数,该函数返回一个元组,元组中的每个元素表示排序的级别。首先按照grandparent_id
排序,然后按照parent_id
排序,最后按照child_id
排序。这样就可以实现按照父级和子级以及子级的父级对订单列表进行排序。
上一篇:按父关系对数组进行排序
下一篇:按父级id对所有子项进行排序