问题

假如,在有两个大文件分别存储了大量的数据,数据其实很简单就是一堆字符串,每行存储一条,如何快速筛选出两个文件的异同之处么,或者如何筛选出两个文件中不同的元素呢?

刚开始我是通过最简单的方法,利用for循环去一个个的判断,时间复杂度为m的n次幂,当然当文件数量级为十万或者百万时,速率简直慢到了极点。

解决方法

利用set()的different(方法)可快速比较,两个set集合的不同之处,也就是对集合进行数学运算

假设:数据1拥有858882条记录,数据2有360029条记录,快速挑选出数据2中而不存在与数据1中的数据

方法:先将两个文件中的数据读入两个list:data1和data2,然后通过:set(data2).difference(set(data1)),获取data2与data1的差集

下面为一个小的demo,可以看到近百万级的数据,比较出差集也就需要1秒左右,效率不是一般的高

import time

t1 = time.time()

data1 = []

for i in open("inDB.txt","r",encoding="utf-8"):

i = i.strip("\n")

i = i.lower()

data1.append(i)

data2 = []

for i in open("data/18年.filename","r",encoding="utf-8"):

i = i.strip("\n")

i = i.lower()

data2.append(i)

newdata = set(data2).difference(set(data1))

t2 = time.time()

print(f"data1 length:\t{len(data1)}")

print(f"data2 length:\t{len(data2)}")

print(f"newdata length:\t{len(newdata)}")

print(f"time use:\t{round(t2 - t1,3)}s")

list最多可以存放多少条数据呢?

python中list最多可以存放多少条数据呢?

对于这个问题,有个网友调研了python的文档,结果跟计算机的性能相关

64位机器:2^63-1=9223372036854775807

32位机器:2^31-1=2147483647

import sys

print(sys.maxsize)

print(pow(2,63)-1)

9223372036854775807

9223372036854775807

集合set的操作

内置函数

作用

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python无法处理特别大的数据文件_Python实现快速大文件比较代码解析相关推荐

  1. python多线程写同一个文件_Python多线程快速写入文件,python,飞速

    Python多线程快速写入文件,python,飞速 发表时间:2020-07-10 乱序多线程写入 举个最简单的例子,只要求快速写入即可,对顺序无要求时: import threading def w ...

  2. python对csv文件中的数据进行分类_python 数据处理 对csv文件进行数据处理

    数据如下图: 用python对数据进行处理: #读取csv文件内容并进行数据处理 import os import csv import datetime import re from itertoo ...

  3. python爬取东方财富网资金流向数据(在本地生成csv文件)

    今天我们来试着用python爬取东方财富网资金流向的表格数据. 第一步:程序及应用的准备 首先我们需要安装selenium库,使用命令pip install selenium;然后我们需要下载对应的c ...

  4. python中csv文件添加数据标签_Python对csv格式文件进行数据分析

    csv格式文件数据分析 1.下载数据 1.1下载数据,处理csv格式文件的数据 安装csv模块,在网上下载或者自己写一个csv格式的文件 也可以访问官网,不过很多人下不了这些文档,我这的下载积分只要1 ...

  5. python打开json文件_python怎么读json文件

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  6. python编译成手机可用程序打开本文件_python创建可以打开文件的EXE

    改进方向 生成最简单的exe程序 将python脚本转化为exe程序比较常用的是两个库,py2exe和pyinstaller,由于前者不支持3.5及以上版本,操作也相对复杂,因此这里选择pyinsta ...

  7. python怎么发送代码文件_python 通过 socket 发送文件的实例代码

    目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = ...

  8. python npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

  9. python将元祖写入txt文档_python元祖和文件用法举例

    1.元组的几种创建方法 T = () #创建一个空的元组 T = (1,) #创建一个空的字符串 T = (0,'Ni',1.2,3) #创建一个含有四个元素的元组 T = 0,'Ni',1.2,3 ...

最新文章

  1. ​causal-learn:基于Python的因果发现算法平台
  2. TCP协议三次握手连接四次握手断开和DOS攻击
  3. 洛谷 P3374 【模板】树状数组 1
  4. 选中的磁盘具有mbr分区表。在efi_如何使用老毛桃winpe的Bootice工具备份VHDX文件MBR分区表?...
  5. B Convex Polygon
  6. 对esp和ebp分析来了解函数的调用过程
  7. @value 数组_为什么不推荐用for...in遍历数组
  8. rust开发环境_Rust 环境搭建
  9. 只有ajax会跨域吗_ajax解决跨域
  10. 恒大继续押宝造车 9.3亿美元收购NEVS的51%股权
  11. 分位数回归的R语言实现
  12. 基于Paddle Serving百度智能边缘BIE的边缘AI解决方案
  13. MATLAB常用画图函数
  14. scratch节假日课程:春节舞狮
  15. spring AOP切面及日志记录实现
  16. 描述数据库表关系之间的ER图(1对1,1对多,多对1,多对多等关系)
  17. 数据中心解决方案安全技术
  18. 暑假来了,画一个日月地球的轨道模型给孩子们,秒懂四季更迭、日蚀月蚀
  19. python将多个列表合并_Python将多个list合并为1个list的方法
  20. AES解密报错:Given final block not properly padded. Such issues can arise if a bad key is used during dec

热门文章

  1. DOM4J对于XML的用法
  2. 15 -Flask构建弹幕微电影网站-基于角色的访问控制
  3. [摘录]第8章 与非美国人谈判的技巧
  4. UBUNTU下SUBLIME TEXT3的安装+破解+汉化+中文输入
  5. poj 2411 Mondriaan#39;s Dream 【dp】
  6. (匹配 二维建图) Antenna Placement --POJ --3020
  7. Spring的IOC原理[通俗解释一下]
  8. Programming in Scala (Second Edition) 读书笔记12 Trais
  9. window 完全卸载oracle,Windows下彻底删除Oracle
  10. mysql.server 文件是什么_mysql的启动脚本mysql.server及示例配置文件