Python 字典操作高效技巧:合并、生成与排序实战

远山来客
远山来客
发布时间:2026-10-16 | 6人浏览过
原创

本文深入解析 Python 字典的高级操作技巧,涵盖 Python 3.9+ 的 union 与 |= 合并、旧版本解包、字典生成式筛选、Key-Value 互换、列表转字典、按值排序及 Counter 统计等实用场景,助力提升代码效率与可读性。

1. 引言

在日常开发中,字典是处理数据的核心结构之一。对于初学者而言,往往容易写出冗长且低效的代码来完成简单的字典操作。本文将重点介绍 Python 中关于字典的若干实用技巧,掌握这些方法能显著优化代码逻辑并提升开发效率。

接下来,我们直接进入核心内容。

2. 使用 union 操作合并字典

过去,开发者常通过 for 循环遍历来合并多个字典。然而,自 Python 3.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 操作的简洁性,它通常是首选方案。但如果您仍在使用 Python 3.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. 使用字典生成式

类似于列表生成式,字典生成式提供了一种创建字典的便捷途径,并赋予了我们在创建过程中对数据进行筛选的能力。

字典生成式的基本语法结构为:

D = {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->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 互换

在某些业务场景下,我们需要将字典中的键和值进行互换。实现这一目标有多种策略。

以下是两种较为推荐的实现方式:

cities = {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->'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 中最常用的数据结构之一。在某些情况下,我们需要将列表转换为字典,具体方法需根据列表内容区分讨论:

若列表中已包含键值对元组,可直接使用 dict 构造函数生成字典,如下所示:

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

若列表仅包含键,且需要统一赋予相同的值,此时通常建议使用 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 来排序

利用一行代码即可实现按值排序,可借助 lambda 函数配合 sorted 方法完成,样例如下:

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 相关产品和应用

全部下载

专题列表