关于将列表插入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]
答案 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']]]