加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 基于2个元素的列表重复删除列表

发布时间:2020-12-20 12:38:49 所属栏目:Python 来源:网络整理
导读:我有一个列表列表,如下所示: [[Joel,Green,597],[Katie,Higgins,623],[Joel,123],...] 我想通过查看名称和姓氏来删除列表中的元素(应该删除具有相同名称和姓氏的元素).在上面的示例中,结果列表应仅包含: [[Katie,623]] 我尝试了下面的代码,但只有当某些列
我有一个列表列表,如下所示:

[[Joel,Green,597],[Katie,Higgins,623],[Joel,123],...]

我想通过查看名称和姓氏来删除列表中的元素(应该删除具有相同名称和姓氏的元素).在上面的示例中,结果列表应仅包含:

[[Katie,623]]

我尝试了下面的代码,但只有当某些列表的所有三个元素都相同时才执行重复删除:

newlist = []
reader = csv.reader(f,delimiter=",")  # read content
my_list = list(reader) #put content in my_list
for i in my_list:
    if i not in newlist:
        newlist.append(i)

有人可以帮忙吗?

解决方法

你最好在这里使用一个计数器来跟踪包含人名和姓氏的元组.然后我们可以执行两遍算法:

>首先构建柜台;
>接下来过滤列表.

我们可以这样做:

from collections import Counter from operator import itemgetter

reader = csv.reader(f,")
my_list = list(reader)

getter = itemgetter(0,1)

counter = Counter(map(getter,my_list))

new_list = [item for item in my_list if counter[getter(item)] <= 1]

因此,如果getter(item)(包含前两项的元组)发生了两次或更多次,我们会过滤列表中的所有项目.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读