python - 嵌套列表的 Groupby

标签 python list

我有一个列表[[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/

相关文章:

python - 使用 datetime.date 填充 WTForms 表单对象

python - 特征提取自然语言处理

python:从 python 字符串列表中提取 float (AUD 31.99)

python - 从字典列表中获取平均值

python - 使用python opencv检测刻度线

python - 不满足条件时重置 pandas cumsum

Python 多维列表 - IndexError : list index out of range

python - 使用列表的单个元素扩展列表的列表错误

python - 使用wxPython显示SQL查询结果

java - 如何正确创建多维数组的集合