首页 > 编程语言 >Python中优雅的字典技巧总结

Python中优雅的字典技巧总结

时间:2022-10-04 12:31:06浏览次数:58  
标签:Python US 优雅 London York UK cities 字典

1. 引言

在日常工作中,大家都需要进行字典的相关操作,对于某些初学者,经常会写一堆繁琐的代码来实现某项简单的功能。本篇文章重点介绍一些在Python中关于字典的一些简单技巧,熟练掌握相关技巧可以极大提升大家的工作效率。 闲话少说,我们直接开始吧!

2. 使用union操作合并字典

当然我们可以使用for循环来组合不同字典中的元素,但是在使用Python3.9之后,我们可以方便的使用union操作来进行字典的合并。

样例代码如下:

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'}

3. 使用解包操作合并字典

考虑到使用union操作的简洁性,我经常尽可能的使用该操作进行字典的合并操作。但是,如果我们使用的是Python3.9以下的版本,有没有其他简洁的方式来实现上述字典合并功能呢? 当然是存在的,此时推荐使用解包操作来实现。

样例如下:

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'}

4. 使用字典生成式

与Python中的列表生成式一样,字典生成式也是创建字典的一种简便的方法,它为我们提供了筛选数据的灵活性。

字典生成式的一般范式为:

D = {key: value for key,value in iterable (if condition)}

我们可以通过下方例子来体检一下字典生成式的强大,如下:

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'}

5. 字典中key-value互换

在某些情形下,我们需要互换字典中的key-value,当然有各种各样的策略来实现上述功能。 以下是我比较推荐的两种实现,如下:

cities = {'London': 'UK', 'Tokyo': 'Japan', 'New York': 'US'}

方案一:

reversed_cities = {v: k for k, v in cities.items()}
print(reversed_cities)
# {'UK': 'London', 'Japan': 'Tokyo', 'US': 'New York'}

方案二:

reversed_cities = dict(zip(cities.values(), cities.keys()))
print(reversed_cities)

6. 列表转为字典

列表也是Python中最常使用的数据结构之一,在某些情形下,我们需要将列表转化为字典。这里我们分情况来讨论:

假如列表中包含key和value,此时可以直接使用dict来生成相应的对象,如下:

cities = [('London', 'UK'), ('New York', 'US'), ('Tokyo', 'Japan')]
d_cities = dict(cities)
print(d_cities)
# {'London': 'UK', 'New York': 'US', 'Tokyo': 'Japan'}

如果列表中只含有key,需要统一赋值某value,此时一般使用​​dict.fromkeys​​ 方法来实现,如下:

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'}

7. 字典按照value来排序

使用一行代码来实现字典按照value排序,可以借助​​lambda​​来实现。

样例如下:

cities = {'London': '2', 'Tokyo': '3', 'New York': '1'}
print(sorted(cities.items(),key=lambda d:d[1]))
# [('New York', '1'), ('London', '2'), ('Tokyo', '3')]

8. 使用Counter

如果我们需要知道在字符串中每个字母使用了多少次,最直观的方法可能是编写一个for循环来遍历所有字母并进行统计。 但如果我们知道Counter,则上述任务将变得异常简单:

from collections import Counter

city = "Yang Zhou"
chars = Counter(city)
print(chars)
# Counter({'Y': 1, 'a': 1, 'n': 1, 'g': 1, ' ': 1, 'Z': 1, 'h': 1, 'o': 1, 'u': 1})

顾名思义,​​Counter​​​对象帮助我们完成字符统计部分,并将结果保存为字典。如果我们能在类似的使用场景中记住这个特殊的​​dict​​,那么可以节省大量的代码编写时间。

9. 总结

本文重点介绍了Python中字典操作的相关技巧,并针对性的给出了相关示例和代码实现。

最后,送给大家两句话共勉:

​学习Python意味着我们可以编写返回正确结果的程序。​​​ ​

​掌握Python意味着我们可以以优雅、整洁和Pythonic的方式编写相同的程序。​


您学废了嘛?

Python中优雅的字典技巧总结_python

标签:Python,US,优雅,London,York,UK,cities,字典
From: https://blog.51cto.com/u_15506603/5731195

相关文章

  • skywalking 实现收集基于python的Django项目链路追踪案例
    一、python3环境设置1.1、安装python3apt-getupdateaptinstallpython3-pip-ypipinstall"apache-skywalking"[root@skywalking-agent-07~]#pipinstall"apache-s......
  • 0555-6.1.0-使用Python并发访问认证和非认证集群
    作者:李继武1文档编写目的Fayson在前面的文章《​​0553-6.1.0-如何使用Java代码同时访问安全和非安全CDH集群​​》和《​​0554-6.1.0-同一java进程中同时访问认证和非认证......
  • python在VScode中中文输出乱码的解决方案
    ————————————————版权声明:本文为CSDN博主「Rhett.Yao」的原创文章。原文链接:https://blog.csdn.net/m0_63109538/article/details/126419637——————......
  • python系列教程196——参数匹配
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于......
  • 【Web开发】Python实现Web服务器(Bottle框架)
    Django-TheWebframeworkforperfectionistswithdeadlines.Flask-ThePythonmicroframeworkforbuildingwebapplications.Tornado-TornadoisaPythonw......
  • Python代码调试方法
    对于每个程序开发者来说,调试几乎是必备技能。常用Pycharm编辑器里的方法有Print大法、log大法,但缺少类似Matlab的变量区,给代码调试带来不便,特别是在有函数的情况下,变量无法......
  • python 批量删除超过某时长的视频 (改)
    importos.pathfrommoviepy.editorimportVideoFileClipfromtqdmimporttqdmdefget_file_names(path):return[os.path.join(path,f)forfinos.listdir(......
  • python partition函数_Python partition()函数的使用方法
    一、partition()函数的语法格式string_name.partition(separator)(1)string_name为要被分隔的字符串或字符串变量。(2)该函数有一个字符串类型的参数:separator,该参数用于指......
  • 学习笔记:python字符串的处理方法
    python学习字符串处理方法1.str.lower()和str.upper()实现全大写和全小写。2.str.split()能够使字符串以一种格式分割开,并返回一个分割完成的列表。3.str.count(x)......
  • 学习笔记;python循环
    python学习1.for循环foriinrange(1,10):print(i)#输出为123456789for循环与列表的结和squares=[]fornumberinrange(1,10):square=......