所有 Python 开发人员几乎每天都需要操作字典。如何才能像那些高级 Python 开发人员一样,用 Pythonic 和优雅的方式处理字典呢。
本文将介绍高级 Python 工程师常用的 dict 操作技巧,希望你能在阅读后得到一些新的想法。欢迎关注、点赞、收藏。
1.使用联合运算符合并字典
当然,你可以写 for 循环来组合不同字典的元素。但是从 Python 3.9 开始,你再也不需要手动完成了。
使用联合操作是合并字典的最简单方法。
cities_us = {‘New York City’: ‘US’, ‘Los Angeles’: ‘US’}
cities_uk = {‘London’: ‘UK’, ‘Birmingham’: ‘UK’}
cities = cities_us|cities_uk
print(cities)
#{‘New York City’: ‘US’, ‘Los Angeles’: ‘US’, ‘London’: ‘UK’, ‘Birmingham’: ‘UK’}
您还可以使用 :|= 进行就地更新
cities_us = {‘New York City’: ‘US’, ‘Los Angeles’: ‘US’}
cities_uk = {‘London’: ‘UK’, ‘Birmingham’: ‘UK’}
cities_us |= cities_uk
print(cities_us)
#{‘New York City’: ‘US’, ‘Los Angeles’: ‘US’, ‘London’: ‘UK’, ‘Birmingham’: ‘UK’}
2.带星号的字典解包
由于它的简单性,如果可能的话,我将始终使用联合运算符。
但是,有的公司不可避免地会有一些使用旧版本 Python 。
您可以改用字典解包技巧:
cities_1 = {‘New York City’: ‘US’, ‘Los Angeles’: ‘US’}
cities_2 = {‘London’: ‘UK’, ‘Birmingham’: ‘UK’}
cities = {**cities_1, **cities_2}
print(cities)
#{‘New York City’: ‘US’, ‘Los Angeles’: ‘US’, ‘London’: ‘UK’, ‘Birmingham’: ‘UK’}
如上所述,在两个星号的帮助下,可以轻松地解包和合并 Python 字典。
3.使用字典推导式来创建词典
与 Python 中的列表推导式一样,字典推导式是一种创建字典的绝妙方式,它使我们可以灵活地过滤数据,因为它可以包含语句。dict理解的模板如下:if
D = {key: value for key,value in iterable (if condition)}
下面的示例利用了 dict 推导的强大功能,在一行代码中从两个列表生成一个 dict:
cities = [‘London’, ‘New York’, ‘Tokyo’, ‘Cambridge’, ‘Oxford’]
countries = [‘UK’, ‘US’, ‘Japan’, ‘UK’, ‘UK’]
uk_cities = {city:country for city, country in zip(cities, countries) if country == ‘UK’}
print(uk_cities)
#{‘London’: ‘UK’, ‘Cambridge’: ‘UK’, ‘Oxford’: ‘UK’}
4.反转字典的键和值
有许多单行方法可以反转字典的键和值。以下是我最喜欢的三种方法:
cities = {‘London’: ‘UK’, ‘Tokyo’: ‘Japan’, ‘New York’: ‘US’}
#Method 1
reversed_cities = {v: k for k, v in cities.items()}
print(reversed_cities)
#{‘UK’: ‘London’, ‘Japan’: ‘Tokyo’, ‘US’: ‘New York’}
#Method 2
reversed_cities = dict(zip(cities.values(), cities.keys()))
print(reversed_cities)
#Method 3
reversed_cities = dict(map(reversed, cities.items()))
print(reversed_cities)
5.将列表转换为字典
列表也是一种常用的数据结构。 在某些情况下,我们需要将列表转换为字典。
如果列表包含“键”和“值”:
cities = [(‘London’, ‘UK’), (‘New York’, ‘US’), (‘Tokyo’, ‘Japan’)]
d_cities = dict(cities)
print(d_cities)
#{‘London’: ‘UK’, ‘New York’: ‘US’, ‘Tokyo’: ‘Japan’}
如果不:
cities = [‘London’, ‘Leeds’, ‘Birmingham’]
d_cities = dict.fromkeys(cities,‘UK’) # set the default value to ‘UK’
print(d_cities)
#{‘London’: ‘UK’, ‘Leeds’: ‘UK’, ‘Birmingham’: ‘UK’}
6. 字典排序
只需要一行代码就可以根据需要对列表进行排序:
cities = {‘London’: ‘2’, ‘Tokyo’: ‘3’, ‘New York’: ‘1’}
print(sorted(cities.items(),key=lambda d:d[1]))
#[(‘New York’, ‘1’), (‘London’, ‘2’), (‘Tokyo’, ‘3’)]
7. 使用默认字典
当您通过不存在的键获取字典的值时,将引发异常:
city = {‘UK’:‘London’,‘Japan’:‘Tokyo’}
print(city[‘Italy’])
#KeyError: ‘Italy’
为避免意外问题,一个好的解决方案是使用 :defaultdict
from collections import defaultdict
city = defaultdict(str)
city[‘UK’] = ‘London’
print(city[‘Italy’])
如上所示,我们可以避免异常,即使需要一个不存在的 key.defaultdict()
8. 使用计数器
如果你好奇每个字母在一个字符串中出现了多少次,最直观的方法可能是写一个 for 循环来遍历所有字母并计算数字。
但是如果你知道,上面的任务将像下面的代码一样简单:Counter
from collections import Counter
author = “Yang Zhou”
chars = Counter(author)
print(chars)
#Counter({‘Y’: 1, ‘a’: 1, ‘n’: 1, ‘g’: 1, ’ ': 1, ‘Z’: 1, ‘h’: 1, ‘o’: 1, ‘u’: 1})
该对象帮助我们完成计算部分并将结果保存为字典。如果你能在类似的使用场景中记住这个特殊的字典,它可以为你节省大量的代码编写时间。
结论
掌握 Python 意味着可以用优雅、整洁和 Pythonic 的方式编写相同的程序。你使用 Python 的时间越长,你就会越喜欢它。
最后
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!(文末领取)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。(文末领读者福利)
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 (文末领取哦)