Sign in New API Help About

1.6 KB of Python console session
Created 1 day, 2 hours ago — expires in 6 days
Viewed 65 times
https://dpaste.com/2GKVJB4M2
COPY TO CLIPBOARD SOFT WRAP RAW TEXT DUPLICATE DIFF
Python 3.11.4 (main, Jun  7 2023, 10:13:09) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> nested_list = [
...     {'name': '/dev/loop0'},
...     {'name': '/dev/loop1'},
...     {'name': '/dev/loop2'},
...     {'name': '/dev/loop4'},
...     {'name': '/dev/loop5'},
...     {'name': '/dev/loop6'},
...     {'name': '/dev/sda', 'children': [{'name': '/dev/sda1', 'children': [{'name': '/dev/mapper/lubuntu--vg-root'}, {'name': '/dev/mapper/lubuntu--vg-swap_1'}]}]},
...     {'name': '/dev/sdb', 'children': [{'name': '/dev/sdb1'}, {'name': '/dev/sdb2'}]},
...     {'name': '/dev/sdc', 'children': [{'name': '/dev/sdc1'}, {'name': '/dev/sdc9'}]},
...     {'name': '/dev/sdd', 'children': [{'name': '/dev/sdd1'}, {'name': '/dev/sdd9'}]},
...     {'name': '/dev/sde', 'children': [{'name': '/dev/sde1'}, {'name': '/dev/sde9'}]}
... ]
>>> 
>>> def flatten(items):
...     for item in items:
...         children = item.pop('children', None)
...         yield item
...         if children:
...             yield from flatten(children)
... 
>>> list(flatten(nested_list))
[{'name': '/dev/loop0'}, {'name': '/dev/loop1'}, {'name': '/dev/loop2'}, {'name': '/dev/loop4'}, {'name': '/dev/loop5'}, {'name': '/dev/loop6'}, {'name': '/dev/sda'}, {'name': '/dev/sda1'}, {'name': '/dev/mapper/lubuntu--vg-root'}, {'name': '/dev/mapper/lubuntu--vg-swap_1'}, {'name': '/dev/sdb'}, {'name': '/dev/sdb1'}, {'name': '/dev/sdb2'}, {'name': '/dev/sdc'}, {'name': '/dev/sdc1'}, {'name': '/dev/sdc9'}, {'name': '/dev/sdd'}, {'name': '/dev/sdd1'}, {'name': '/dev/sdd9'}, {'name': '/dev/sde'}, {'name': '/dev/sde1'}, {'name': '/dev/sde9'}]

Share: