将列表插入到特定索引的2D列表中

时间:2019-06-04 09:00:37

标签: python python-3.x multidimensional-array

关于将列表插入2D列表,我发现不多。

我尝试使用append(由于附加不能在特定索引处附加,所以无法使用)和插入,但是insert不能在列表中附加多个列表。

我想转换此二维列表

[[0, dataABC, date], [0, dataABC, date], [1, dataABC, date], [1, dataABC, date] , [1, dataABC, date]]

访问3D列表以直接访问特定索引的列表。

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]

1 个答案:

答案 0 :(得分:3)

如果已订购,则可以使用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']]]

如果未订购,请使用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']]]