python - 如何根据层次结构对数据进行排序
问题描述
我有一个字符串列表,如下所示:
["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”..和所有的孩子..在进入下一个顶级对象“aa ”。
在 python 中解决这个问题的好方法是什么(想知道集合或 itertools 库中是否有任何东西,我找不到合适的方法)?
解决方案
这是使用 justsorted
和自定义键的一种方法:
res = sorted(lst, key=lambda x: x.split('::'))
['a', 'a::b', 'a::b::c', 'a::b::d', 'aa', 'b', 'b:c', 'bbb', 'c']
推荐阅读
- c - 检测到 C-Linux-Stack 崩溃!用于使用 while 循环验证输入
- sql - 如何在 spock 框架中模拟 Grails 中的私有变量
- python - Python不同的列表返回相同的结果
- magento - 在产品列表页面和产品详细信息页面中显示自定义属性在我的价格属性下
- python - Pandas,如果检测到符号,如何分隔数据帧字符串?
- django - ChangePasswordForm Django 可能的表单字段错误
- c++ - 编译 ThorSerializer 示例时的未定义参考
- c++ - 生成使用颜色检查器生成的 imatest 颜色错误图表的背景?
- mongodb - 如何在 MongoDB 中进行嵌套计数?
- javascript - id不能导入