path
および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で実行するls -lR
と、その下にリストされているdirs内のdirsとファイルの素晴らしいリストが表示されます。
ありがとう