掌握Python编程的两大利器:字典推导与集合推导

本文介绍了Python中的字典推导和集合推导,展示了如何用简洁代码处理数据转换、提取和运算,强调了其在数据分析中的实用价值,同时提到了它们的优缺点和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典推导和集合推导是 Python 中的一种高效的编程技巧,它们可以用一行简洁的代码来创建字典或集合,而不需要使用循环或条件语句。字典推导和集合推导的语法如下:

    # 字典推导
    {key: value for key, value in iterable if condition}
    # 集合推导
    {expression for value in iterable if condition}

其中,iterable 是一个可迭代的对象,如列表、元组、字符串、字典或集合;condition是一个可选的布尔表达式,用于过滤满足条件的元素;key 和 value 是字典的键和值,可以是任意的表达式;expression 是集合的元素,可以是任意的表达式。

字典推导和集合推导在数据分析中很有用,因为它们可以方便地对数据进行转换、提取、修改或运算,而不需要写复杂的代码。字典和集合是 Python 中常用的数据结构,它们具有以下特点:

  • 字典是一种无序的、可变的、键值对的映射,它可以存储不同类型的数据,且键必须是唯一的和不可变的,如字符串、数字或元组。字典可以用于存储和查询数据,例如用户信息、配置参数、统计结果等。

  • 集合是一种无序的、不重复的、可变的数据集合,它可以存储不同类型的数据,且元素必须是不可变的,如字符串、数字或元组。集合可以用于去除重复的数据,以及进行集合运算,例如求并集、交集、差集或对称差集等。

案例应用

案例一、使用字典推导从字符串、字典或 cookies 中提取或修改数据,返回新的字典。

例如,假设我们有一个字符串,它是一个 URL 的查询参数,我们想要将它转换为一个字典,方便我们进行数据分析。我们可以使用字典推导来实现,如下所示:

# 字符串
query = "name=Tom&age=20&gender=male&city=New York"
# 字典推导
dict_query = {k: v for k, v in (item.split("=") for item in query.split("&"))}
# 结果
 print(dict_query)
 # {'name': 'Tom', 'age': '20', 'gender': 'male', 'city': 'New York'}

例如,假设我们有一个字典,它是一个用户的信息,我们想要修改其中的某些值,例如将年龄加一,或者将城市改为首字母大写。我们可以使用字典推导来实现,如下所示:

# 字典
user = {'name': 'Tom', 'age': 20, 'gender': 'male', 'city': 'new york'}
# 字典推导
dict_user = {k: int(v) + 1 if k == 'age' else v.title() if k == 'city' else v for k, v in user.items()}
# 结果
print(dict_user)
# {'name': 'Tom', 'age': 21, 'gender': 'male', 'city': 'New York'}

例如,假设我们有一个 cookies,它是一个网站的登录信息,我们想要从中提取用户名和密码,方便我们进行数据分析。我们可以使用字典推导来实现,如下所示:

 # cookies
 cookies = "username=Tom; password=123456; session_id=abcdefg; expires=2023-11-25"
 # 字典推导
 dict_cookies = {k: v for k, v in (item.strip().split("=") for item in cookies.split(";")) if k in ('username', 'password')}
 # 结果
 print(dict_cookies)
 # {'username': 'Tom', 'password': '123456'}

案例二、使用字典推导将字典中的所有 key 设置为小写,或者将字典中所有 key 是小写字母的 value 统一赋值为 ‘error’。

例如,假设我们有一个字典,它是一个学生的成绩,我们想要将所有的 key 设置为小写,方便我们进行数据分析。我们可以使用字典推导来实现,如下所示:

# 字典
score = {'Math': 90, 'English': 80, 'Chinese': 85, 'History': 75}
# 字典推导
dict_score = {k.lower(): v for k, v in score.items()}
# 结果
print(dict_score)
# {'math': 90, 'english': 80, 'chinese': 85, 'history': 75}

例如,假设我们有一个字典,它是一个错误信息,我们想要将所有 key 是小写字母的 value 统一赋值为 ‘error’,方便我们进行数据分析。我们可以使用字典推导来实现,如下所示:

# 字典
error = {'code': 404, 'message': 'Not Found', 'url': 'https://www.bing.com/'}# 字典推导
dict_error = {k: 'error' if k.islower() else v for k, v in error.items()}
# 结果
 print(dict_error)
 # {'code': 'error', 'message': 'error', 'url': 'https://www.bing.com/'}

案例三、使用集合推导从列表、元组或字符串中去除重复的元素,返回新的集合。

例如,假设我们有一个列表,它是一个用户的喜好,我们想要去除其中的重复元素,方便我们进行数据分析。我们可以使用集合推导来实现,如下所示:

  # 列表
  preference = ['music', 'movie', 'book', 'game', 'music', 'movie', 'book']
  # 集合推导
  set_preference = {item for item in preference}
  # 结果
  print(set_preference)
  # {'music', 'movie', 'book', 'game'}

例如,假设我们有一个元组,它是一个商品的属性,我们想要去除其中的重复元素,方便我们进行数据分析。我们可以使用集合推导来实现,如下所示:

# 元组
product = ('name', 'price', 'category', 'rating', 'review', 'name', 'price')
# 集合推导
set_product = {item for item in product}
# 结果
print(set_product)
# {'name', 'price', 'category', 'rating', 'review'}

例如,假设我们有一个字符串,它是一个句子,我们想要去除其中的重复字母,方便我们进行数据分析。我们可以使用集合推导来实现,如下所示:

# 字符串
sentence = "This is a sentence with some repeated letters."
# 集合推导
set_sentence = {char for char in sentence if char.isalpha()}
# 结果
print(set_sentence)
# {'a', 'c', 'd', 'e', 'h', 'i', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'w'}

案例四、使用集合推导判断两个字符串是否为变位词,即是否由相同的字母组成,但顺序不同。

例如,假设我们有两个字符串,它们是两个单词,我们想要判断它们是否为变位词,方便我们进行数据分析。我们可以使用集合推导来实现,如下所示:

  # 字符串
  word1 = "listen"
  word2 = "silent"
  # 集合推导
  set_word1 = {char for char in word1}
  set_word2 = {char for char in word2}
  # 判断
  if set_word1 == set_word2:
      print("They are anagrams.")
  else:
      print("They are not anagrams.")
  # 结果
  # They are anagrams.

案例五、使用集合推导进行集合运算,例如求并集、交集、差集或对称差集。

例如,假设我们有两个集合,它们是两个用户的喜好,我们想要求它们的并集、交集、差集或对称差集,方便我们进行数据分析。我们可以使用集合推导来实现,如下所示:

  # 集合
  preference1 = {'music', 'movie', 'book', 'game'}
  preference2 = {'music', 'movie', 'sport', 'travel'}
  # 集合推导
  union = {item for item in preference1 | preference2}
  intersection = {item for item in preference1 & preference2}
  difference = {item for item in preference1 - preference2}
  symmetric_difference = {item for item in preference1 ^ preference2}
  # 结果
  print(union)
  # {'music', 'movie', 'book', 'game', 'sport', 'travel'}
  print(intersection)
  # {'music', 'movie'}
  print(difference)
  # {'book', 'game'}
  print(symmetric_difference)
  # {'book', 'game', 'sport', 'travel'}

字典推导和集合推导是 Python 中的一种强大的编程技巧,它们可以用一行简洁的代码来创建字典或集合,而不需要使用循环或条件语句。它们在数据分析中很有用,因为它们可以方便地对数据进行转换、提取、修改或运算,而不需要写复杂的代码。

字典推导和集合推导: 提高了代码的可读性和可维护性,使代码更简洁和清晰。提高了代码的执行效率,减少了内存的占用和时间的消耗。提高了代码的灵活性和扩展性,可以根据不同的需求进行定制和修改。

字典推导和集合推导: 不能处理复杂的逻辑和嵌套的结构,可能需要使用循环或条件语句来实现。不能直接修改原有的字典或集合,而是返回一个新的字典或集合,可能需要额外的空间和时间。不能保证字典或集合的顺序,因为字典和集合是无序的数据结构,可能需要使用其他的方法来排序或索引。

在数据分析中,字典推导和集合推导的应用前景和建议: 根据不同的数据类型和场景,选择合适的数据结构和推导式,以提高数据分析的效率和质量。在使用字典推导和集合推导时,注意控制推导式的长度和复杂度,避免过度使用或滥用,以保持代码的可读性和可维护性。在使用字典推导和集合推导时,注意检查推导式的正确性和合理性,避免出现错误或异常,以保证数据分析的准确性和稳定性。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值