开发者社区> 问答> 正文

从两个不同的列表中删除重复的行?

我正在尝试从列表中删除重复的行,并且我在这里阅读了一些帖子,但是我没有得到想要的结果。也许是因为我在列表中混合了字符串和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]唯一的唯一行/集。

展开
收起
祖安文状元 2020-02-21 14:11:51 455 0
1 条回答
写回答
取消 提交回答
  • 您可以使用集合从列表中删除重复项。请注意,这是许多方法之一,例如使用熊猫,麻木等。

    #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 会抛出错误。

    2020-02-21 14:12:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载