Skip to main content
 首页 » 编程设计

python之如何根据层次结构对数据进行排序

2025年05月04日12zhengyun_ustc

我有一个字符串列表如下:

["a","aa", "b","bbb", "c", "a::b", "a::b::c", "a::b::d", "b:c"] 

我想将其排序为

["a", "a::b", "a::b::c", "a:b::d", "aa", "b", "b:c", "bbb", "c"] 

等等。 只是为了上下文.. “::”充当代表层次结构的分隔符。所以,给定一个顶级对象“a”..我们首先得到“a::b”,“a::b::c”..和所有的 child ......在进入下一个顶级对象“aa”之前".

在 python 中解决这个问题的好方法是什么(想知道 collections 或 itertools 库中是否有任何东西,我一直找不到合适的方法)?

请您参考如下方法:

这是一种仅使用 sorted 和自定义键的方法:

res = sorted(lst, key=lambda x: x.split('::')) 
 
['a', 'a::b', 'a::b::c', 'a::b::d', 'aa', 'b', 'b:c', 'bbb', 'c']