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)(包含前两项的元组)发生了两次或更多次,我们会过滤列表中的所有项目. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |