我正在尝试从列表中删除重复的行,并且我在这里阅读了一些帖子,但是我没有得到想要的结果。也许是因为我在列表中混合了字符串和int?
import requests
import numpy as np
list1 = [['dog', 123, -10],['cat', 44, -5],['rabbit', 99, 2]]
list2 = [['dog', 123, -10],['parrot', 44, -5],['rabbit', 99, 2]]
#What we should be left with is ['parrot', 44, -5]
mixem = list1+list2
data = np.array(mixem)
new_array = [tuple(row) for row in data]
uniques = np.unique(new_array)
我究竟做错了什么?我想留下的是['parrot', 44, -5]唯一的唯一行/集。
您可以使用集合从列表中删除重复项。请注意,这是许多方法之一,例如使用熊猫,麻木等。
#given list
list1 = [['dog', 123, -10],['cat', 44, -5],['rabbit', 99, 2]]
list2 = [['dog', 123, -10],['parrot', 44, -5],['rabbit', 99, 2]]
#convert the list to set
set1 = set((tuple(row) for row in list1))
set2 = set((tuple(row) for row in list2))
#use symmetric difference to find the unique elements
s = set1.symmetric_difference(set2) #this will return a set
#to convert back to list
list3 = [list(ele) for ele in s]
由于列表是可变的,因此首先需要将它们转换为元组,否则直接使用set(list1)将它们转换为list 会抛出错误。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。