python含嵌套的列表去重问题

今天遇到一个问题,纠结一段时间后终于想到一个方法,挺开心的,就记录下。

问题简化之后是这样的:对于python中类似这样的一个列表

[{‘A‘:2,‘B‘:3,‘C‘:4},{‘A‘:2,‘B‘:4,‘C‘:5},{‘A‘:2,‘B‘:3,‘C‘:5},{‘A‘:2,‘B‘:3,‘C‘:6}]

其中列表的每个元素是有相同结构的字典,我想找出字典中A与B的组合是唯一的列表,C不同时选择最初的那个。

我希望得到的最后结果是这样的[{‘A‘:2,‘B‘:3,‘C‘:4},{‘A‘:2,‘B‘:4,‘C‘:5}]

如果是大家遇到这样的问题会怎么处理呢?

我的想法是先找到重复的列表号,然后再删除这些列表值。如上例中则先找到[2,3],不说太多,先把代码给上把。

del_id = []
for i in range(len(test_list)):
    j = i+1;
    while(j and j!=len(test_list)):
        if (test_list[j][‘A‘] == test_list[i][‘A‘]) and  (test_list[j][‘B‘] == test_list[i][‘B‘]):
            del_id.append(j)
            j = 0
        else:
            j = j+1
de = 0
for item in del_id:
    id_de = item - de
    del test_list[id_de]
    de += 1

上面代码挺简单的,主要是有两点一个是j从i+1开始比较,然后在遇到第一个满足重复的条件时停止,其实我也不知道这样是否能让运算量稍微小点。

因为一开始只是得出列表号,所以列表并没被改变,对于第三次出现的值我们会通过比较第二个重复值时找到列表号。

当时处理的列表长度貌似只是几万条,所以时间还好。

临时想的方案肯定有很多待完善处,如果有同学发现哪里错了或者有更好的办法也希望能告知下啦。

时间: 2024-09-30 10:00:07

python含嵌套的列表去重问题的相关文章

Python练习题4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重复内容 方法一:使用set 方法二:不使用set,自己写方法

方法一:利用集合去重 1 list1 = [5,3,4,'ok',4,3,'abc',8,52,'ok'] 2 list1=list(set(list1)) 3 print(list1) 方法二:此方法略微冗余,先判断元素是否重复,再将重复元素提取并保存到新列表中,再for 新建的列表元素,删除原列表 1 def list_dup(ls): 2 list2 = [] 3 length = len(ls) #获取列表元素个数 4 for i in range(0,length-1): 5 for

你知道如何将python中嵌套的列表扁平化吗?

楔子 将python中嵌套的列表扁平化,指的就是: lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]] # 类似于上面的列表,我们要得到下面的结果 [1, 3, 3, 5, 6, 8, "aaa", 250] 那么我们要如何做呢? yield和yield from 关于如何把一个嵌套的列表扁平化,我们需要使用yield和yield from.这两位老铁的底层实现原理我不想深究,

python 日常已记 列表去重

常规列表去重的两种方法 第一种: list=[1,2,2,2,2,3,4,5,5,6,7,8,8,9] list2=[] for a in list: if a not in list2: list2.append(a) print (list2) 第二种: list=[1,2,2,2,2,3,4,5,5,6,7,8,8,9] list=list(set(list)) print (list3) 原文地址:https://www.cnblogs.com/mahaining/p/9434184.h

一、初识Python ----- 人人都爱列表

python列表的创建与访问 movies = ["The Holy Grail","The Life of Brian","The Meaning of Life"] print(movies[1]) 列表常用的BIF print() 显示列表内容 len() 计算列表的数据项 append() 在列表末尾增加一个数据项         extend() 在列表末尾增加一个数据项集合 pop() 从列表末尾删除数据 remove() 找到并删除

python列表去重 冒泡排序 插序排序

python对列表去重例子 #!/usr/bin/env python arr_num1 = [1,2,3,4,2,12,3,14,3,2,12,3,14,3,21,2,2,3,4111,22,3333,4] arr_num2 = [2,1,3,2,43,234,454,452,234,14,21,14] num_list = [] for i in arr_num1:     if i in arr_num2 and i not in num_list:      num_list.appen

python 展开嵌套列表

python 展开嵌套列表 目录 python 展开嵌套列表 引言 方法1,创建递归函数 方法2,使用列表推导式 其他的方法 引言 Python中的列表还可以将不同数据类型的项放在一个列表中.所以,一个嵌套的列表就是是一个包含多个列表的列表,例如[1,2,[3],[4,[5,6]]. 通常,我们需要将这些嵌套列表转换为平面列表(flatted a nested list),以便对数据执行常规列表操作. 方法1,创建递归函数 首先介绍,python中对一个嵌套的list,和一个空列表[],进行su

【head first python】1.初识python 人人都爱列表

#coding:utf-8 #创建简单的python列表 movies = ["The Holy Grail", "The Life of Brain", "The Meaning of Life"] #可以放在同一行,但分开会更易读 #和数组一样,列表的项从零开始 print movies[1] #>>>The Life of Brain print movies #>>>['The Holy Grail',

python 基础,包括列表,元组,字典,字符串,set集合,while循环,for循环,运算符。

1.continue 的作用:跳出一次循环,进行下一次循环 2.break 跳出不再循环 3.常量 (全是大写)NAME = cjk  一般改了会出错 4.python的第三方库,先安装再导入.装模块:pip 命令 例如:pip install pandas 5.os.system(command)在linux 和window上都行 6.res  = os.popen('ipconfig').read() 7.pyc是个什么东西. 8.sys.exit()直接跳出所有 9.列表:name =  

Python数据类型之三(列表)

列表list 结果类型  中括号括起来 逗号(,)分割每一个元素 列表中的元素可以是数字,字符串,列表,布尔值所有的都能放 索引,切片 增 #append 增加新数据到列表最后 li = ['alex','wusir','egon','女神','taibai'] li.append('lidongxu') print(li) #输出:['alex', 'wusir', 'egon', '女神', 'taibai', 'lidongxu'] #insert 增加新数据到列表指定位置(插入) li