You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对frozenset列表实现指定规则的字典序排序?

frozenset列表自定义字典序排序实现

可以实现,由于frozenset是无序集合类型,本身没有固定的元素顺序,所以需要先为每个frozenset生成有序的比较键,再基于键做字典序排序即可。

实现逻辑

你的示例中所有frozenset均为2个元素,要求优先比较第一个元素、再比较第二个元素的逻辑,对应操作是:

  • 对每个frozenset内部的元素做升序排序,转成元组作为排序key
  • 基于生成的key对所有frozenset做默认的字典序排序

代码实现

def sort_frozensets(*args):
    # 以每个frozenset升序排序后的元组为排序键,做字典序排序
    return sorted(args, key=lambda fs: tuple(sorted(fs)))

效果测试

调用你给出的示例输入测试:

# 测试调用
res = sort_frozensets(
    frozenset(['d','b']), 
    frozenset(['a','b']), 
    frozenset(['z','a']), 
    frozenset(['l','m'])
)
print(res)
# 输出结果:
# [frozenset({'a', 'b'}), frozenset({'a', 'z'}), frozenset({'b', 'd'}), frozenset({'l', 'm'})]

输出顺序和你要求的结果完全一致。

扩展说明

如果你的frozenset元素数量不固定,上述逻辑依然通用,字典序会自动逐位比较元素;如果需要自定义元素的优先级(而非默认的字符编码顺序),只需要修改key生成逻辑,加入自定义的优先级映射即可。


内容的提问来源于stack exchange,提问作者CairoMisr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:15:01