首页 > 编程语言 >python列表里的字典元素去重

python列表里的字典元素去重

时间:2023-01-11 12:11:22浏览次数:60  
标签:__ string python list 列表 duplicate new 字典

去重:

from functools import reduce #导入排序模块

# 列表里的字典元素去重复
def list_dict_duplicate_removal(data_list):
    run_function = lambda x, y: x if y in x else x + [y]
    return reduce(run_function, [[], ] + data_list)


if __name__ == '__main__':
  data_list = [{"a": "123", "b": "321"}, {"a": "123", "b": "321"}, {"b": "321", "a": "123"}]
  print list_dict_duplicate_removal(data_list)

输出结果:

[{'a': '123', 'b': '321'}]

python列表中元素去重的几种方式

class StringReverse(object):
    '''
    列表去重,并按照原来的顺序排序
    '''
 
    # 1.利用set方法和sort方法,原序
    def string_duplicate_1(self, s):
        new_s = list(set(s))  # set无序
        new_s.sort(key=s.index)
        return new_s
 
 
    # 2.用列表中的元素作为字典中的key生成一个新字典,然后获取字典的key,非原序
    def string_duplicate_2(self, s):
        a = {}
        # fromkeys(s,v)该方法的功能是生成一个字典,字典的key是 s中的值,s为可迭代对象,可以为str,tuple,list,set,dict,v为每一个key的值,默认为None
        return a.fromkeys(s).keys()
 
 
    # 3.利用defaultdict, 非原序
    def string_duplicate_3(self, s):
        # 按照之前的顺序
        from collections import defaultdict
        a = defaultdict()
        for x in s:
            a[x] = 0
        return a.keys()
 
    # 4.最简单的循环,添加入新的列表,如果新列表中没有相同元素,则加入。原序
    def string_duplicate_4(self, s):
        new_s = []
        for x in s:
            if x not in new_s:
                new_s.append(x)
        return new_s
 
 
    # 5.利用itertools的groupby方法。非原序
    def string_duplicate_5(self, s):
        from itertools import groupby
        s.sort()
        new_groupby = groupby(s)
        new_s = []
        for x,y in new_groupby:
            new_s.append(x)
        return new_s
 
    # 6.reduce方法。非原序
    def string_duplicate_6(self, s):
        return reduce(lambda x,y:x if y in x else x + [y], [[],] + s)
 
if __name__ == "__main__":
    stringReverse = StringReverse()
    s = [1,3,2,34,4,6,6,7,1,4,8,98]
    print "string_duplicate_1", stringReverse.string_duplicate_1(s)
    print "string_duplicate_2", stringReverse.string_duplicate_2(s)
    print "string_duplicate_3", stringReverse.string_duplicate_3(s)
    print "string_duplicate_4", stringReverse.string_duplicate_4(s)
    print "string_duplicate_5", stringReverse.string_duplicate_5(s)
    print "string_duplicate_6", stringReverse.string_duplicate_6(s) 

输出结果为:

string_duplicate_1 [1, 3, 2, 34, 4, 6, 7, 8, 98]

string_duplicate_2 [1, 2, 3, 4, 98, 6, 7, 8, 34]

string_duplicate_3 [1, 2, 3, 4, 98, 6, 7, 8, 34]

string_duplicate_4 [1, 3, 2, 34, 4, 6, 7, 8, 98]

string_duplicate_5 [1, 2, 3, 4, 6, 7, 8, 34, 98]

string_duplicate_6 [1, 2, 3, 4, 6, 7, 8, 34, 98]
————————————————

原文章:python列表里的字典元素去重 - zhangdingqu - 博客园
版权声明:本文为CSDN博主「SuperSpinach」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xzmlwwb/article/details/125735022



标签:__,string,python,list,列表,duplicate,new,字典
From: https://www.cnblogs.com/kaka0318/p/17043357.html

相关文章

  • Micropython 之 uos - 基本‘操作系统’服务
    移远QuecPython(基于EC600s)开发物联网应用(五)micropython标准库上面连接有详细的uos实例操作Micropython上电启动,系统载入一个分区类,两个模组类,先熟悉这3个类的基本......
  • 批量将python打包成.so文件(python将py编译成so)
    1首先为什么要将python打包成so文件Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。python的解释特性是将py编译为独有的二......
  • 怎么在C++中调用Python?C++调用python封装接口实例解析!
    看到标题很多小伙伴会问:不是都说python是胶水语言,他调用什么什么语言封装的库来做一些什么事情吗?怎么小编你这反而变成被调用的对象了呢?没错,常规情况下一般都是以python语......
  • Python实例浅谈之三Python与C/C++相互调用
    一、问题     Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结。二、Python调用C/C++1、Python调用C动态链接库       P......
  • Python - deepdiff简单使用
    Python-deepdiff目录aboutDeepDiffDeepSearchDeepHashDeepDiff在单元测试中的应用返回Python目录返回测试目录about#DeepDiff模块常用来校验两个对象......
  • Binding to List Data 绑定到列表数据
    得到当前项1voidbirthdayButton_Click(objectsender,RoutedEventArgse){2//Getthecurrentpersonoutofthecollectionview3Peoplepeople=(People......
  • 浅析 C++ 调用 Python 模块
    作为一种胶水语言,Python 能够很容易地调用 C 、 C++ 等语言,也能够通过其他语言调用 Python 的模块。Python 提供了 C++ 库,使得开发者能很方便地从 C++ 程序中......
  • 极客编程python入门-图形界面
    图形界面Python支持多种图形界面的第三方库,包括:Tk、wxWidgets、Qt、GTK等等。第一步是导入Tkinter包的所有内容:fromtkinterimport*第二步是从​​Frame​​​派生一个​......
  • Python字符串
    1.字符串输出print('数据1','数据2','数据3',sep='',end='\n')数据与数据之间的连接sep=''数据输出之后的换行end='\n'2.字符串转义符转义字符描述......
  • 将Python文件发布成DLL并调用
    如何将Python文件发布成DLL供C/C++调用,试过两种思路:一种是用Cython将Python文件转为.c文件,但是简简单单4行代码,由于调用了NumPy,生成.c文件有5000+行,而且完全找不到原pyt......