Python 字典与列表去重排序实战技巧

Alice
Alice
发布时间:2026-10-11| 2人浏览过
原创

本文详解 Python 中列表去重与字典操作的实用技巧。通过对比 set 与 OrderedDict.fromkeys 实现保序去重,解析字典访问 KeyError 与 get 默认值机制,并演示利用 sorted 函数按键值对进行升序或降序排序。

列表去重:保序与无序的选择

在处理列表数据时,去除重复元素是常见需求。Python 提供了多种实现方式,其核心区别在于是否保留原始顺序。

无序去重:使用 set

set 是集合类型,天然具备去重特性。将其转换为列表是最简单的去重方式,但会丢失元素原有的排列顺序。

my_list = [3, 2, 1, 1, 2, 3]
print(my_list)
# [3, 2, 1, 1, 2, 3]
unique_list = list(set(my_list))
print(unique_list)
# [1, 2, 3]

保序去重:使用 OrderedDict

若需保留元素首次出现的顺序,可利用 collections.OrderedDict。通过 fromkeys 方法将列表元素作为键,字典会自动去重并保持插入顺序。

from collections import OrderedDict

my_list = [3, 2, 1, 1, 2, 3]
print(my_list)
# [3, 2, 1, 1, 2, 3]
unique_list = list(OrderedDict.fromkeys(my_list))
print(unique_list)
# [3, 2, 1]

字典访问:安全获取与异常处理

字典操作时,直接通过键访问不存在的键会引发 KeyError。在实际开发中,推荐使用 get 方法,它允许指定默认返回值,避免程序崩溃。

直接访问与 KeyError

直接通过方括号 [] 访问字典键时,若键不存在,Python 会抛出异常。

url_dict = {
  'google': 'https://www.google.com/',
  'github': 'https://github.com/',
  'facebook': 'https://www.facebook.com/',
}

print(url_dict['facebook'])
print(url_dict['google'])
print(url_dict['github'])
# print(url_dict['baidu'])
# KeyError: 'baidu'

# https://www.facebook.com/
# https://www.google.com/
# https://github.com/

安全访问:使用 get 方法

get(key, default) 方法在键不存在时返回指定的默认值(默认为 None),非常适合处理可能缺失的键。

url_dict = {
  'google': 'https://www.google.com/',
  'github': 'https://github.com/',
  'facebook': 'https://www.facebook.com/',
}

print(url_dict.get('facebook', 'https://www.google.com/'))
print(url_dict.get('google', 'https://www.google.com/'))
print(url_dict.get('github', 'https://www.google.com/'))
print(url_dict.get('baidu', 'https://www.google.com/'))

# https://www.facebook.com/
# https://www.google.com/
# https://github.com/
# https://www.google.com/

字典排序:灵活定制排序规则

sorted() 函数可对任何可迭代对象进行排序。对于字典,通常需将其转换为键值对列表(.items()),并通过 key 参数指定排序依据。

按值或键排序

通过 lambda 表达式指定排序键:e[1] 表示按值排序,e[0] 表示按键排序。

unordered_dict = {'c': 1, 'b': 2, 'a': 3}

print(sorted(unordered_dict.items(), key=lambda e: e[1]))
# [('c', 1), ('b', 2), ('a', 3)]

print(sorted(unordered_dict.items(), key=lambda e: e[0]))
# [('a', 3), ('b', 2), ('c', 1)]

print(sorted(unordered_dict.items(), key=lambda e: e[1], reverse=True))
# [('a', 3), ('b', 2), ('c', 1)]

上述代码展示了按值升序、按键升序以及按值降序的排序结果。通过调整 key 和 reverse 参数,可灵活实现各种排序需求。

以上就是 Python 列表去重保序与字典排序访问技巧的详细内容,更多关于 Python 数据处理与字典操作技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。