我有一个列表[[1,20],[1,30],[2,30],[2,50],[3,60],[1,20]]
。如果嵌套列表中的第一个元素与之前的相同,我应该删除它(而不是删除列表中的重复项)。在这种情况下,我应该得到 [[1,20],[2,30],[3,60],[1,20]]
。
我正在使用 itemgetter 和 groupby 并编写了以下内容:
[x[0] for x in groupby(testlist, itemgetter(0))]
上面的代码仅输出第一个元素为 [1, 2, 3, 1]。我希望它的嵌套列表格式与 [[1,20],[2,30],[3,60],[1,20]]
相同。我怎样才能在同一个列表“测试列表”上就地执行此操作。有没有比简单地再次迭代整个列表更好的方法来实现这一点。
最佳答案
您只显示了 key 。 itertools.groupby
返回键和组的元组。您需要组中的第一项:
print [next(g) for k, g in groupby(i, itemgetter(0))]
# # [[1, 20], [2, 30], [3, 60], [1, 20]]
关于python - 嵌套列表的 Groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281509/