为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯王 2023-08-08 17:36:39
抱歉,我相信这是一个常见问题,但似乎无法找到所需结果的确切答案。我只想返回基于一个元素的列表列表中的唯一项目。例子;List = [[1,2],[2,3],[1,4],[1,5],[6,3]]期望的结果;List = [[2,3],[6,3]]由于 1 作为多个列表项中的第一个元素存在,因此我希望忽略所有这些项。有没有一种简单的方法可以做到这一点?
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

它可能很诱人,list.count但如果天真地使用它,它会使使用它的解决方案变得 O(n^2)。


O(n) 解决方案将使用collections.Counter:


from collections import Counter


nested_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]]


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信