如何基于层次结构对数据进行排序

Moh*_*hit 1 python sorting list

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

["a","aa", "b","bbb", "c", "a::b", "a::b::c", "a::b::d", "b:c"]
Run Code Online (Sandbox Code Playgroud)

我想把它归类为

["a", "a::b", "a::b::c", "a:b::d", "aa", "b", "b:c", "bbb", "c"]
Run Code Online (Sandbox Code Playgroud)

等等.仅用于上下文.."::"充当表示层次结构的分隔符.所以,给定一个顶级对象"a"..我们首先得到"a :: b","a :: b :: c"..以及所有的孩子..然后去下一个顶级对象"aa ".

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

jpp*_*jpp 7

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

res = sorted(lst, key=lambda x: x.split('::'))

['a', 'a::b', 'a::b::c', 'a::b::d', 'aa', 'b', 'b:c', 'bbb', 'c']
Run Code Online (Sandbox Code Playgroud)

  • 哦,是的,这比我的方法更好.得到我的投票.:) (3认同)