元素的多重排序

应用场景:渲染用户界面时,因为关键的消息和特殊的事件应该优先显示在其他信息之前。

numbers = [8, 3, 1, 2, 5, 4, 7, 6]  //原始数据
group = {8, 3, 5, 7}  //优先级高的数据,
def sort_priority(numbers, group):
    found = False

    def helper(x):  
        nonlocal found   
        if x in group:
            found = True
            return 0, x
        return 1, x

    numbers.sort(key=helper)
    return found
res = sort_priority(numbers, group)
print(res, numbers)  //打印

完善用类方法实现

# 优化 类方法
class Sorter:
    def __init__(self, group):
        self.group = group
        self.found = False

    def __call__(self, x):
        if x in self.group:
            self.found = True
            return 0, x
        return 1, x


sorter = Sorter(group)
numbers.sort(key=sorter)
print(numbers)
assert sorter.found is True

输出结果

True [3, 5, 7, 8, 1, 2, 4, 6]
[3, 5, 7, 8, 1, 2, 4, 6]

作者:朱海波

posted @   中亿丰数字科技  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示