pickle——保存python中数据结构的模块

前些天自己借用《machine learning in action》一书中的FP-Growth代码,实现了频繁项集的发现和关联规则的挖掘。由于数据量比较大,在用python跑的时候有时会出现kernel die的提示,kernel重启后又要重新从数据库里读数据、整理、发现频繁项集,实在不要太麻烦。于是就想基于spark实现,没准儿这些七七八八的毛病就好了呢?

在spark上实现后,尴尬的事情发生了。同一算法,spark上算出的频繁项集个数竟然和《machine learning in action》中的代码算出来的个数不同。好奇宝宝于是想一探究竟,怎么比较两段代码得到的频繁项集呢?没错,就是利用pickle模块!

python的pickle模块(泡菜模块偷笑)可以将python的数据结构,如list、tuple、dict等等都存在一个文件中,方便这些结构的持久化,同时也简化了代码。简单用法如下:

import pickle

#数据保存
temp_dict1 = {'001':'hello', '002':'world'}
file = open('test.pkl', 'wb')
pickle.dump(temp_dict1, file)
file.close()

#数据加载
file = open('test.pkl', 'rb')
temp_dict2 = pickle.load(file) #取出的temp_dict2 就可以为我们所用了
file.close()

这样,就已经可以满足我比较两个列表的想法了

下面是Python实现保存、读取和显示通讯信息的示例代码: ```python import os # 定义结构体 class Contact: def __init__(self, name, phone): self.name = name self.phone = phone # 保存信息函数 def save_info(contacts): with open("contacts.txt", "w") as f: for c in contacts: line = c.name + " " + c.phone + "\n" f.write(line) # 读取信息函数 def load_info(): contacts = [] with open("contacts.txt", "r") as f: name = "" phone = "" while True: c = f.read(1) if not c: break if c == " ": phone = "" while True: c = f.read(1) if c == "\n": break phone += c contacts.append(Contact(name, phone)) name = "" else: name += c return contacts # 显示信息函数 def show_info(contacts): for c in contacts: print("姓名:", c.name, "\t电话:", c.phone) # 主函数 def main(): # 定义5个联系人信息 contacts = [Contact("", "") for i in range(5)] for i in range(5): name = input("请输入第%d个联系人姓名:" % (i+1)) phone = input("请输入第%d个联系人电话:" % (i+1)) contacts[i].name = name contacts[i].phone = phone # 保存信息到文件 save_info(contacts) # 从文件读取信息 contacts = load_info() # 显示所有联系人信息 show_info(contacts) if __name__ == "__main__": main() ``` 以上代码,我们定义了一个Contact类来表示每个联系人的姓名和电话号码,并定义了保存、读取和显示信息的函数。在主函数,我们首先定义5个联系人信息,然后将其保存到文件,再从文件读取信息,并最终显示所有联系人的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值