I have dict
of nested list
s:
d = {'a': [[('a1', 1, 1), ('a2', 1, 2)]], 'b': [[('b1', 2, 1), ('b2', 2, 2)]]}
print (d)
{'b': [[('b1', 2, 1), ('b2', 2, 2)]], 'a': [[('a1', 1, 1), ('a2', 1, 2)]]}
I need create list
of tuple
s like:
[('b', 'b1', 2, 1), ('b', 'b2', 2, 2), ('a', 'a1', 1, 1), ('a', 'a2', 1, 2)]
I tried:
a = [[(k, *y) for y in v[0]] for k,v in d.items()]
a = [item for sublist in a for item in sublist]
I think my solution is a bit over-complicated. Is there some better, more pythonic, maybe one line solution?
You were almost there:
The
v[0]
is needed because your values are just single-element lists with another list contained. The above can be expanded to the following nestedfor
loops, if you wanted to figure out what it does:Demo: