我在写什么代码时遇到一些问题,这些问题使我可以使用列表理解从三维列表中删除重复项?这是我下面的列表和示例。
df = [[[3, 7, 9, 28],[3, 7, 9, 28],[3, 7, 9, 28],[3, 7, 17, 28],[7, 25, 27, 28], [7, 17, 21, 27, 28]],[[3, 4, 28],[4, 7, 28],[4, 7, 28],[3, 4, 28],[4, 7, 14, 28],[3, 14, 28],[3, 4, 28],[3, 7, 14, 28]],[[7, 11, 28],[3, 11, 28],[3, 7, 12, 28],[7, 11, 12, 28],[3, 11, 12, 28],[7, 25, 27, 28],[3, 7, 11, 28]]]
我希望我的结果是:
df1 = [[[3, 7, 9, 28],[3, 7, 17, 28],[7, 25, 27, 28],[7, 17, 21, 27, 28]],[[3, 4, 28],[4, 7, 28],[4, 7, 14, 28],[3, 14, 28],[3, 7, 14, 28]],[[7, 11, 28],[3, 11, 28],[3, 7, 12, 28],[7, 11, 12, 28],[3, 11, 12, 28],[3, 7, 11, 28]]]
答案 0 :(得分:0)
通过在插入列表之前检查列表是否已存在,可以避免此类混乱。这样,您可以避免复杂的循环。
编辑:我知道这不是您直接想要的,但是我认为不需要列表理解。轻松进行以下操作即可:
EDIT2:根据要求添加了排序的版本。将每个2d列表的索引位置用作键,并使用列表的.sort()功能对其进行排序。
res = []
for dflist in df:
df_set = set(tuple(y) for y in dflist)
innerlist = [list(x) for x in df_set]
innerlist.sort(key = lambda x: dflist.index(x))
res.append(innerlist)