Format list of list sub elements keeping structure.
Peter Otten
__peter__ at web.de
Tue Jul 24 04:19:05 EDT 2018
Sayth Renshaw wrote:
> I have data which is a list of lists of all the full paths in a json
> document.
>
> How can I change the format to be usable when selecting elements?
How do you want to select these elements?
myjson = ...
path = "['foo']['bar'][42]"
print(eval("myjson" + path))
?
Wouldn't it be better to keep 'data' as is and use a helper function like
def get_value(myjson, path):
for key_or_index in path:
myjson = myjson[key_or_index]
return myjson
path = ['foo', 'bar', 42]
print(get_value(myjson, path))
?
> data = [['glossary'],
> ['glossary', 'title'],
> ['glossary', 'GlossDiv'],
> ['glossary', 'GlossDiv', 'title'],
> ['glossary', 'GlossDiv', 'GlossList'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'ID'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'SortAs'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'GlossTerm'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'Acronym'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'Abbrev'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'GlossDef'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'GlossDef', 'para'],
> ['glossary', 'GlossDiv', 'GlossList', 'GlossEntry', 'GlossDef',
> ['GlossSeeAlso'], 'glossary', 'GlossDiv', 'GlossList', 'GlossEntry',
> ['GlossDef', 'GlossSeeAlso', 0], 'glossary', 'GlossDiv', 'GlossList',
> ['GlossEntry', 'GlossDef', 'GlossSeeAlso', 1], 'glossary', 'GlossDiv',
> ['GlossList', 'GlossEntry', 'GlossSee']]
>
> I am trying to change it to be.
>
> [['glossary'],
> ['glossary']['title'],
> ['glossary']['GlossDiv'],
> ....]
>
> Currently when I am formatting I am flattening the
> structure(accidentally).
>
> for item in data:
> for elem in item:
> out = ("[{0}]").format(elem)
> print(out)
>
> Which gives
>
> [glossary]
> [title]
> [GlossDiv]
> [title]
> [GlossList]
> [GlossEntry]
> [ID]
> [SortAs]
> [GlossTerm]
> [Acronym]
> [Abbrev]
> [GlossDef]
> [para]
> [GlossSeeAlso]
> [0]
> [1]
> [GlossSee]
>
>
> Cheers
>
> Sayth
More information about the Python-list
mailing list