Python 中可使用list()函数转换的数据类型 - 第二章(dict字典)

部署运行你感兴趣的模型镜像

Python 中可使用list()函数转换的数据类型 - 第一章-优快云博客文章浏览阅读764次,点赞22次,收藏4次。本文介绍了 Python 中 list() 函数的原理及其应用。list() 基于迭代协议,可将集合、元组和字符串等可迭代对象转换为列表。集合转换后顺序可能变化,元组转换为可变列表,字符串则拆分为字符列表。通过 type() 和 list() 函数,可实现类型检查与数据结构转换,满足多种编程需求。 https://blog.youkuaiyun.com/HaoChenbest/article/details/146416750 在上一章中,我们已经详细探讨了 Python 中可以使用 list() 函数转换的几种数据类型,包括集合(set)、元组(tuple)和字符串(str)。接下来,本文将继续深入分析 list() 函数还可以转换的其他几种数据类型。

知识点:可转换为列表的数据类型

1. 字典(dict

字典本身不能直接被list() 转换为包含键值对的列表,但可以转换为键的列表、值的列表或键值对的列表(键值对以元组形式出现)。

案例1

  • 当你对字典使用list() 函数时,它会提取字典的键,并将这些键组成一个列表。

  • 字典的键是唯一的,因此生成的列表中不会包含重复的元素。

  • 生成的列表中键的顺序取决于字典的插入顺序(在 Python 3.7 及以上版本中,字典是有序的,会按照插入顺序排列键)。

案例2

  • a.values() 返回一个包含字典中所有值的视图对象。

  • 使用 list() 函数将这个视图对象转换为一个列表。

  • 列表中的值是字典中键对应的值,顺序与字典的键值对插入顺序一致(在 Python 3.7 及以上版本中)。

小结:

1. list(a):提取字典的键(keys)

2. list(a.values()):提取字典的值(values)

  • 键(keys):字典的键是唯一的,它们是字典的“索引”,用于访问对应的值。键通常是字符串或其他不可变类型。

  • 值(values):字典的值是与键对应的存储数据,可以是任意类型(包括数字、字符串、列表等),并且值可以重复。

因此,list(a) 和 list(a.values()) 的输出结果不同,是因为它们分别提取了字典的键和值。

案例3

 转换字典的键值对为列表 
  • a.items():返回一个动态视图对象,包含字典中所有的键值对,每个键值对是一个元组 (key, value)。

  • list(a.items()):将这个动态视图对象转换为一个列表,列表中的每个元素是一个元组,表示字典中的一个键值对。

  • 输出:[('hi', 1), ('hello', 2), ('world', 3)]。

找出同时作为键和值的元素
  • a.keys():返回一个动态视图对象,包含字典中所有的键。

  • a.values():返回一个动态视图对象,包含字典中所有的值。

  • a.keys() & a.values():尝试对两个视图对象进行集合交集操作。& 是集合的交集运算符,用于找出两个集合中共同的元素。

  • list(a.keys() & a.values()):将交集结果转换为列表。

关键点解释
  • 在字典a = {"hi": 1, "hello": 2, "world": 3} 中,键是 ["hi", "hello", "world"],值是[1, 2, 3]。

  • 键和值的类型不同(键是字符串,值是整数),因此它们之间没有共同的元素。

  • 因此,a.keys() & a.values() 的结果是一个空集合,转换为列表后结果为[]

值的视图对象”(dict_values 对象)

1. 值的视图对象的特性
  • 动态更新:dict_values 对象是一个动态视图,它会随着字典内容的变化而自动更新。这意味着如果你修改了字典(例如添加、删除或修改键值对),dict_values 对象的内容也会相应地改变。

  • 不可直接修改:虽然 dict_values 对象会自动更新,但它本身是不可直接修改的。你不能直接对 dict_values 对象进行添加、删除或修改操作。

  • 可迭代:dict_values 对象是一个可迭代对象,可以使用 for 循环遍历其中的值。

案例1

  • 修改字典
    • 通过a["python"] = 6,向字典 a 中添加了一个新的键值对 "python": 6。

    • 字典a 的内容现在变为{"hi": 1, "hello": 2, "world": 3, "python": 6}。

  • 再次调用 a.values()
    • a.values() 返回一个动态视图对象,它会自动更新以反映字典的当前状态。

    • 现在视图对象包含 [1, 2, 3, 6]。

  • 转换为列表
    • 使用list(a.values()) 将动态视图对象转换为列表 list(a.values())

  • 输出:[1, 2, 3, 6]。
小结
  • a.values():返回一个动态视图对象,包含字典中所有值。

  • list(a.values()):将动态视图对象转换为一个列表。

  • 修改字典:通过a["python"] = 6,向字典中添加新的键值对,字典的内容被更新。

  • 动态更新:由于a.values() 是动态的,它会自动反映字典的最新状态,因此转换后的列表也会包含新的值。

额外补充:为什么 a["python"] = 6 能修改字典内容?

在 Python 中,字典通过键(key)来访问和修改其值(value)。a["python"] = 6 的操作可以分为两部分理解:

  1. a["python"]

    • 这表示访问字典 a 中键为 "python" 的值。

    • 如果键 "python" 已经存在于字典中,那么它会返回对应的值。

    • 如果键 "python"不存在于字典中,那么它会创建一个新的键。

  2. = 6

    • 这表示将键 "python" 对应的值设置为 6

    • 如果键 "python"已经存在,那么它的值会被更新为 6。

    • 如果键"python"不存在,那么会向字典中添加一个新的键值对 "python": 6

因此,a["python"] = 6 既可以用来更新已有的键值对,也可以用来添加新的键值对。

除了这种方式,还可以使用 update()、del、pop() 和 clear() 等方法来修改字典的内容。

2. dict_values与列表的区别

虽然 dict_values 对象和列表都可以存储多个值,但它们有以下主要区别:

  • 动态性:dict_values 是动态的,会随着字典的变化而自动更新;而列表是静态的,不会自动更新。

  • 不可修改性:dict_values 对象本身是不可直接修改的;而列表是可以直接修改的。

  • 用途:dict_values 主要用于查看字典的值,而列表是一个通用的数据结构,可以用于存储任意类型的元素。

3. 为什么需要值的视图对象(dict_values)

dict_values 对象的主要用途是提供一种高效的方式来访问字典中的值,同时保持与字典的动态关联。这使得在处理字典时,可以避免频繁地复制值,从而提高性能和内存效率。

总结

  • 值的视图对象(dict_values)是一个动态的、与字典紧密关联的视图,用于访问字典中的值。

  • 它会随着字典内容的变化而自动更新,但本身不可直接修改。

  • 通过将 dict_values 对象转换为列表或直接迭代,可以方便地使用字典中的值。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HaoChen/ChenHao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值