Python 字典与列表去重排序实战技巧
本文详解 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 数据处理与字典操作技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









