首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用Python中的字典解析

如何使用Python中的字典解析

作者头像
老齐
发布2020-06-05 10:48:58
发布2020-06-05 10:48:58
5.7K00
代码可运行
举报
文章被收录于专栏:老齐教室老齐教室
运行总次数:0
代码可运行

作者:Jonathan Hsu

翻译:老齐

列表解析,是Python中常用的操作,它语法简单,循环速度足够快。但是,你了解字典解析吗?它跟列表解析一样吗?

字典解析,不同于列表解析。

基本语法

让我们通过两个示例,了解一下字典解析的基本语法。

在第一个示例中,创建一个字典,其值为1-10的整数。

代码语言:javascript
代码运行次数:0
运行
复制
my_nums = {
   i: i
   for i in range(1,6)
}
print(my_nums)     # {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5}

下面,创建类似的字典,但是,增加一个条件,只选择奇数作为字典的值。

代码语言:javascript
代码运行次数:0
运行
复制
my_nums = {
   str(i): i
   for i in range(1,6)
   if i % 2 == 1
}
print(my_nums)      # {'1': 1, '3': 3, '5': 5}

或许看了上面两个示例,还没有什么感觉,但它们的确是演示字典解析语法规则的好例子。

字典解析与列表解析最大的不同在于,字典解析中药有两个值——一个是键,另外一个是值。因此,字典解析,需要你多思考一下,这或许就是它使用频率不高的原因吧。

下面让我们看看真实开发中遇到的情况。

实战中的字典解析

下面的两个示例,是我常用到的。

  1. 移除缺失值

我喜欢在移除缺失值的时候使用字典解析,最典型的就是移除None。这里需要使用筛选条件,通常这么做:

代码语言:javascript
代码运行次数:0
运行
复制
data = {
  "id": 1,
  "first_name": "Jonathan",
  "middle_name": None,
  "last_name": "Hsu"
}
cleaned = {
  k:v
  for (k,v) in data.items()
  if v != None
}
"""
{
  'id': 1,
  'first_name': 'Jonathan',
  'last_name': 'Hsu'
}
"""

上面使用了字典的.items()方法,它以元组的形式返回字典的键值对。

  1. 替代map函数

我比较喜欢map函数,但是,字典解析也能够实现同样的功能,并且它没有那么复杂的语法,比如使用Lambda函数之类的。

代码语言:javascript
代码运行次数:0
运行
复制
data = {
  "first_name": "Jonathan",
  "last_name": "Hsu"
}
mapped = {
  k: v.upper()
  for (k,v) in data.items()
}
"""
{
  'first_name': 'JONATHAN',
  'last_name': 'HSU'
}
"""

结论

怎么样?是不是喜欢字典解析了?希望本文能够为你的技能库增加一个工具。

原文链接:https://medium.com/better-programming/how-to-use-python-dictionary-comprehensions-af5cc5c75bba

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本语法
  • 实战中的字典解析
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档