python去重,一个由dict组成的list的去重示例


Posted in Python onJanuary 21, 2019

背景:有一个list,里面的每一个元素都是dict,根据某一个key进行去重,在这里,key代表question

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# created by fhqplzj on 2017/12/07 上午11:38
from itertools import groupby
from operator import itemgetter
 
import pandas as pd
 
 
def distinct(items):
  questions = map(itemgetter('question'), items)
  df = pd.DataFrame({
    'items': items,
    'questions': questions
  })
  return df.drop_duplicates(['questions'])['items'].tolist()
 
 
def distinct2(items):
  exist_questions = set()
  result = []
  for item in items:
    question = item['question']
    if question not in exist_questions:
      exist_questions.add(question)
      result.append(item)
  return result
 
 
def distinct3(items):
  key = itemgetter('question')
  items = sorted(items, key=key)
  return [next(v) for _, v in groupby(items, key=key)]
 
 
def distinct4(items):
  from itertools import compress
  mask = (~pd.Series(map(itemgetter('question'), items)).duplicated()).tolist()
  return list(compress(items, mask))
 
 
if __name__ == '__main__':
  data = [
    {'question': 'a', 'ans': 'b'},
    {'question': 'b', 'ans': 'd'},
    {'question': 'a', 'ans': 'p'},
    {'question': 'b', 'ans': 'e'}
  ]
  print distinct4(data)

以上这篇python去重,一个由dict组成的list的去重示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
Python科学画图代码分享
Nov 29 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
详解python中的hashlib模块的使用
Apr 22 Python
Python如何实现的二分查找算法
May 27 Python
python map比for循环快在哪
Sep 21 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
python eventlet绿化和patch原理
Nov 21 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 #Python
python3.6数独问题的解决
Jan 21 #Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 #Python
对python列表里的字典元素去重方法详解
Jan 21 #Python
在Python中字典根据多项规则排序的方法
Jan 21 #Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 #Python
pycharm远程开发项目的实现步骤
Jan 20 #Python
You might like
德生S2000电路分析
2021/03/02 无线电
php中处理模拟rewrite 效果
2006/12/09 PHP
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
新浪的图片新闻效果
2007/01/13 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python中的filter()函数的用法
2015/04/27 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
Python函数调用追踪实现代码
2020/11/27 Python
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
高中生的学习总结自我鉴定
2013/10/26 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL