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

yipeiwu_com7年前Python基础

背景:有一个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设计】。

相关文章

请不要重复犯我在学习Python和Linux系统上的错误

请不要重复犯我在学习Python和Linux系统上的错误

本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习、使用的对象,它简单、易用、好操作、界面绚丽,对于想接触Linux...

Python设计模式之命令模式原理与用法实例分析

Python设计模式之命令模式原理与用法实例分析

本文实例讲述了Python设计模式之命令模式原理与用法。分享给大家供大家参考,具体如下: 命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数...

用Python的pandas框架操作Excel文件中的数据教程

用Python的pandas框架操作Excel文件中的数据教程

引言 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务。有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其他地方找到的复杂功能同等重要。作为额外的福利...

win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码

win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码

链接:https://pan.baidu.com/s/1l2yiba7ZTPUTf41ZnJ4PYw 提取码:t3bq win10安装tesserocr 首先需要下载tesseract,...

Python基础中所出现的异常报错总结

Python基础中所出现的异常报错总结

今天我们来探索python中大部分的异常报错 首先异常是什么,异常白话解释就是不正常,程序里面一般是指程序员输入的格式不规范,或者需求的参数类型不对应,不全等等。 打个比方很多公司年终...