掘金 人工智能 前天 19:52
苦练Python第29天:一行代码生成字典与集合!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本篇文章介绍了Python中字典推导式和集合推导式的用法,展示了如何用一行代码高效地创建和转换数据。文章提供了清晰的语法解释和丰富的实战示例,涵盖了数字平方表、字母计数、键值反转、过滤数据以及提取唯一字母等多种场景。同时,文章还指出了使用推导式时的常见注意事项,如键冲突覆盖和集合的无序性,帮助读者更熟练地运用这一强大功能,提升代码效率和简洁性。

✨ 字典推导式能够以一行代码简洁地创建新字典,通过`{key_expr: value_expr for item in iterable}`的语法,可以实现键值对的快速生成、转换和过滤,例如创建数字平方表、统计字母频率、反转字典键值对以及过滤低价商品。

🌟 集合推导式也提供了一种一行代码生成集合的方式,其语法为`{expression for item in iterable}`,特别适用于从序列中提取唯一元素或进行条件筛选后生成集合,例如获取单词中的唯一字母或生成偶数的平方集合。

🚀 使用字典推导式和集合推导式相比传统循环,能够显著提高代码的运行速度和简洁性,是处理数据转换、过滤和去重等任务的理想选择,能够让数据处理过程更加高效。

⚠️ 在使用推导式时需注意潜在的坑点,如字典推导式中键名重复会导致值被覆盖,遍历字典时应使用`.items()`方法,而集合是无序结构,不应依赖其位置索引进行操作。

苦练Python第29天:一行代码生成字典与集合!

前言

大家好,我是倔强青铜三。欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎来到《100天Python》第29天!昨天我们聊了列表推导式的优雅写法,今天升级——用一行代码搞定字典和集合,让数据处理快到飞起。


🎯 今日速览


🧾 字典推导式:键值对秒变新字典

语法极简:

{key_expr: value_expr for item in iterable}
✅ 示例1:数字平方表
squares = {x: x**2 for x in range(5)}print(squares)# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
✅ 示例2:统计字母出现次数
word = "banana"char_count = {char: word.count(char) for char in word}print(char_count)# {'b': 1, 'a': 3, 'n': 2}
✅ 示例3:一键反转键值
original = {'a': 1, 'b': 2, 'c': 3}swapped = {v: k for k, v in original.items()}print(swapped)# {1: 'a', 2: 'b', 3: 'c'}
✅ 示例4:过滤低价水果
prices = {'apple': 100, 'banana': 40, 'mango': 150}cheap_fruits = {k: v for k, v in prices.items() if v < 100}print(cheap_fruits)# {'banana': 40}

🔁 集合推导式:去重神器

语法同样简洁:

{expression for item in iterable}
✅ 示例1:单词唯一字母
word = "balloon"unique_chars = {char for char in word}print(unique_chars)# {'n', 'b', 'o', 'a', 'l'}
✅ 示例2:偶数平方集合
even_squares = {x**2 for x in range(10) if x % 2 == 0}print(even_squares)# {0, 4, 16, 36, 64}

💡 为什么非用不可?


⚠️ 常见踩坑指南

    键冲突后值被覆盖
    {char: i for i, char in enumerate("banana")}# {'b': 0, 'a': 5, 'n': 4}  # 'a'被最后一次覆盖
    字典遍历忘加.items()
    {k: v for k, v in my_dict}       # ❌ TypeError{k: v for k, v in my_dict.items()}  # ✅
    误把集合当有序结构
    集合无序,切勿依赖位置索引。

🧪 真实场景实战

🔧 场景1:快速反转映射
data = {"x": 1, "y": 2}inverted = {v: k for k, v in data.items()}# {1: 'x', 2: 'y'}
📚 场景2:构建单词索引
words = ["apple", "banana", "cherry"]index = {word: i for i, word in enumerate(words)}# {'apple': 0, 'banana': 1, 'cherry': 2}
🔥 场景3:提取句子中所有元音
sentence = "Today is a beautiful day"vowels = {char for char in sentence.lower() if char in 'aeiou'}# {'a', 'e', 'i', 'o', 'u'}

🧭 今日复盘

✅ 掌握字典推导式集合推导式
✅ 区分它们与列表推导式的差异
✅ 牢记语法细节与最佳实践
✅ 实战演练:反转字典、过滤数据、提取唯一元素

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python 字典推导式 集合推导式 代码效率 数据处理
相关文章