Reputation: 57
I didn't find a lot about inserting a list to a 2D list.
I tried to use append (which doesn't work because append can't append at specific index) and insert, but insert can't append multiple lists in a list.
I'd like to convert this 2D list
[[0, dataABC, date], [0, dataABC, date], [1, dataABC, date], [1, dataABC, date] , [1, dataABC, date]]
to a 3D list to get direct access to the list of a specific index.
data = [
[[0, dataABC, date],[0, dataABC, date]],
[[1, dataABC, date], [1, dataABC, date], [1, dataABC, date]]
]
print(data[1]):
[1, dataABC, date], [1, dataABC, date], [1, dataABC, date]
Upvotes: 1
Views: 844
Reputation: 42718
If they are ordered you can use itertools.groupby
:
>>> l = [[0, 'data', 'date'], [0, 'data', 'date'], [1, 'data', 'date'], [1, 'data', 'date'] , [1, 'data', 'date']]
>>> results = list(list(v) for k, v in groupby(l, key=lambda x: x[0]))
>>> results
[[[0, 'data', 'date'], [0, 'data', 'date']], [[1, 'data', 'date'], [1, 'data', 'date'], [1, 'data', 'date']]]
If they are not ordered use collections.defaultdict
:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for e in l:
... d[e[0]].append(e)
...
>>> results = list(d.values())
>>> results
[[[0, 'data', 'date'], [0, 'data', 'date']], [[1, 'data', 'date'], [1, 'data', 'date'], [1, 'data', 'date']]]
Upvotes: 3