【Python】set、list、dict等类型保存与读取

【Python】set、list、dict等类型保存与读取

0. 介绍

在Python中,我们可以使用set、list、dict等类型来保存和读取数据。这些数据类型在不同场景下具有不同的特点和用途。
set(集合):

  • 特点:集合是由不重复元素组成的无序集合,常用于去重和判断元素是否存在。
  • 创建:可以使用{}或set()来创建集合,并使用add()方法添加元素到集合中。
  • 查询:可以使用for循环遍历集合中的元素,也可以使用in关键字快速判断元素是否存在于集合中。

list(列表):

  • 特点:列表是有序可变的数据类型,可以存储多个元素。
  • 创建:可以使用[]来创建列表,并使用append()方法添加元素到列表中。
  • 查询:可以通过索引访问列表中的元素,也可以使用for循环遍历列表中的元素。

dict(字典):

  • 特点:字典是无序的键值对集合,每个键值对之间用逗号分隔,常用于存储键值对形式的数据。
  • 创建:可以使用{}来创建字典,并使用key:value的方式添加键值对。
  • 查询:可以通过键获取对应的值,也可以使用for循环遍历字典中的键值对。

Pickle:

  • Python中的一个模块,用于将Python对象序列化(即将对象转化为字节流),以便保存到文件或在网络传输中使用。通过pickle模块,我们可以方便地将复杂的数据结构(如列表、字典、自定义对象等)转换为二进制格式,并在需要时重新加载。
  • 序列化和反序列化:Pickle提供了dump()和dumps()方法用于将Python对象序列化为字节流,以及load()和loads()方法用于从字节流反序列化为Python对象。
  • dump(obj, file):将对象obj序列化,并将结果写入文件file。
    load(file):从文件file中读取序列化的对象,并反序列化为Python对象。
    dumps(obj):将对象obj序列化为字符串。
    loads(data):将字符串data反序列化为Python对象。
  • 支持多种数据类型:Pickle可以序列化几乎所有的内置数据类型(如整数、浮点数、字符串等),以及大多数的自定义对象(只要对象的类定义了__getstate__()和__setstate__()方法)。
  • 保存和加载文件:通过Pickle,我们可以将Python对象保存到文件,以便后续读取。
  • 网络传输:Pickle可以将Python对象序列化为字节流,从而可以方便地在网络传输中使用。

需要注意的是,Pickle不是一种通用的数据交换格式,而是针对Python特定的。它在不同版本的Python解释器之间可能存在兼容性问题,因此在将pickle文件跨应用或跨平台传输时,需要谨慎处理。

  • 此外,由于Pickle可以执行任意的Python代码,因此在从不受信任的源中加载pickle数据时需要小心,以防止安全风险。
  • 总而言之,Pickle模块为Python提供了方便的对象序列化和反序列化功能,可以在文件存储、数据传输等场景中使用,但需要注意其在跨平台和安全性方面的限制。

1. set

要保存和读取Set对象,可以使用pickle模块。pickle模块是Python中用于序列化和反序列化对象的标准库。以下是一个示例代码:

1)保存Set对象到文件:

import pickle

my_set = {1, 2, 3, 4, 5}

# 保存Set对象到文件
with open('set.pkl', 'wb') as file:
    pickle.dump(my_set, file)

在上述代码中,我们创建了一个Set对象 my_set,然后使用pickle.dump()方法将Set对象保存到文件 ‘set.pkl’ 中。我们需要以二进制模式(‘wb’)打开文件,以便进行序列化对象的写入。

2)读取文件中的Set对象:

import pickle

# 从文件中读取Set对象
with open('set.pkl', 'rb') as file:
    my_set = pickle.load(file)

# 打印读取的Set对象
print(my_set)

在上述代码中,我们使用pickle.load()方法从文件 ‘set.pkl’ 中读取Set对象。我们需要以二进制模式(‘rb’)打开文件,以便进行反序列化对象的读取。

2. list

当然也可以使用pickle模块保存和读取除了Set对象之外的其他数据类型,例如List、Dict等。以下是示例代码:

1)保存List对象到文件:

import pickle

my_list = [1, 2, 3, 4, 5]

# 保存List对象到文件
with open('list.pkl', 'wb') as file:
    pickle.dump(my_list, file)

在上述代码中,我们创建了一个List对象 my_list,然后使用pickle.dump()方法将List对象保存到文件 ‘list.pkl’ 中。

2)读取文件中的List对象:

import pickle

# 从文件中读取List对象
with open('list.pkl', 'rb') as file:
    my_list = pickle.load(file)

# 打印读取的List对象
print(my_list)

在上述代码中,我们使用pickle.load()方法从文件 ‘list.pkl’ 中读取List对象。

3. 注意

同样的方式也可以应用于其他数据类型,如Dict、Tuple等。

请注意,在使用pickle保存和读取对象时,要确保文件以二进制模式打开('wb’用于保存,'rb’用于读取),这是因为pickle是以二进制格式进行序列化和反序列化的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋冬无暖阳°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值