猿问

根据第一个元素仅返回列表列表中唯一出现的情况

抱歉,我相信这是一个常见问题,但似乎无法找到所需结果的确切答案。

我只想返回基于一个元素的列表列表中的唯一项目。

例子;

List = [[1,2],[2,3],[1,4],[1,5],[6,3]]

期望的结果;

List = [[2,3],[6,3]]

由于 1 作为多个列表项中的第一个元素存在,因此我希望忽略所有这些项。

有没有一种简单的方法可以做到这一点?


慕斯王
浏览 131回答 1
1回答

慕田峪4524236

它可能很诱人,list.count但如果天真地使用它,它会使使用它的解决方案变得 O(n^2)。O(n) 解决方案将使用collections.Counter:from collections import Counternested_list = [[1,2],[2,3],[1,4],[1,5],[6,3]]counter_map = Counter(sublist[0] for sublist  in nested_list)print(counter_map)output = [sublist for sublist in nested_list if counter_map[sublist[0]] == 1]print(output)输出Counter({1: 3, 2: 1, 6: 1})[[2, 3], [6, 3]]
随时随地看视频慕课网APP

相关分类

Python
我要回答