我有一个字典列表,其中的键为path
and type
(类型 0 => 文件和类型 1 => 目录)初始看起来像这样
everything = [{u'path': u'/1/', u'type': 1},
{u'path': u'/2/', u'type': 1},
{u'path': u'/3/', u'type': 1},
{u'path': u'/1/something/a.py', u'type': 0},
{u'path': u'/1/something/b.py', u'type': 0},
{u'path': u'/1/something/c.py', u'type': 0},
{u'path': u'/1/foobar/', u'type': 1},
{u'path': u'/2/baz/', u'type': 1},
{u'path': u'/1/something/baz/snap/pop/a.py', u'type': 0},
{u'path': u'/1/something/baz', u'type': 1}]
我想先排序path
然后关闭type
所以我得到这样的东西
everything = [{u'path': u'/1/', u'type': 1},
{u'path': u'/1/foobar/', u'type': 1},
{u'path': u'/1/something/baz', u'type': 1}, # < --- I want this here
{u'path': u'/1/something/a.py', u'type': 0},
{u'path': u'/1/something/b.py', u'type': 0},
{u'path': u'/1/something/baz/snap/pop/a.py', u'type': 0},
{u'path': u'/1/something/c.py', u'type': 0},
{u'path': u'/2/', u'type': 1},
{u'path': u'/2/baz/', u'type': 1},
{u'path': u'/3/', u'type': 1}]
其中“某事”部分以类型 1 开头。
我想当我这样做的时候
everything.sort(key=lambda x: (x['path'], x['type']))
我会得到我想要的,但我得到了
everything = [{u'path': u'/1/', u'type': 1},
{u'path': u'/1/foobar/', u'type': 1},
{u'path': u'/1/something/a.py', u'type': 0},
{u'path': u'/1/something/b.py', u'type': 0},
{u'path': u'/1/something/baz', u'type': 1}, # < --- I don't want this here
{u'path': u'/1/something/baz/snap/pop/a.py', u'type': 0},
{u'path': u'/1/something/c.py', u'type': 0},
{u'path': u'/2/', u'type': 1},
{u'path': u'/2/baz/', u'type': 1},
{u'path': u'/3/', u'type': 1}]
有没有一种简单的方法以这种方式排序everything
,还是我必须编写自己的排序?
编辑:
也许这将有助于解释我想要什么。
在 linux 中,当你执行 a 时,ls -lR
你会得到一个很好的 dirs 列表和它下面列出的 dirs 中的文件。
谢谢