字典作为Python的日常工具,拥有快速查找、高效存储等特性,是数据处理的必备神器。让我们一起揭开它的15个隐藏技巧,让你的代码飞起来!
# 使用zip函数结合列表,一键成字典keys = ['name', 'age']values = ['Alice', 24]my_dict = dict(zip(keys, values))print(my_dict)
这个小魔法直接将两个列表配对成字典,是不是很神奇?
numbers = [1, 2, 3, 4]squares = {num: num*num for num in numbers}print(squares)
一行代码,数字变平方,推导式让你的代码优雅到不行!
my_dict = {'name': 'Bob'}print(my_dict.get('age', 'Not Found')) # 不怕找不到,直接告诉你“Not Found”
这招用get方法,安全访问,妈妈再也不担心我遇到KeyError了。
# pop方法,删除并返回值age = my_dict.pop('age', 'Already gone') # 如果不存在,就默认返回'Already gone'print(age)print(my_dict) # 看,'age'没了
pop一出,谁与争锋,键值对消失无踪。
dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}dict1.update(dict2)print(dict1) # 'b'的值被更新,'c'加入,合并就这么简单
update方法,字典合并不费吹灰之力。
for key, value in my_dict.items(): print(f"Key: {key}, Value: {value}")
items方法让我们遍历得明明白白,每一个键值对都不放过。
keys_only = my_dict.keys()values_only = my_dict.values()print(list(keys_only)) # 转成列表方便查看print(list(values_only))
keys和values方法,让你专注你想要的那部分。
if 'age' in my_dict: print("Age is there!")else: print("Sorry, no age.")
直接用in,检查键是否存在,就是这么直接。
print(len(my_dict)) # 瞬间知道字典大小
len函数,快速统计字典的键数量。
# 按值排序sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])print(sorted_dict)# 按键排序sorted_by_key = sorted(my_dict.items())print(sorted_by_key)
排序函数+lambda表达式,按需排序,灵活自如。
list_of_tuples = list(my_dict.items())print(list_of_tuples)
轻松转换,数据形态任你玩转。
my_dict.clear()print(my_dict) # 空空如也,准备迎接新的数据
clear方法,一切从零开始。
nested_dict = { 'person1': {'name': 'Alice', 'age': 24}, 'person2': {'name': 'Bob', 'age': 30}}print(nested_dict['person1']['name']) # 访问内层,深挖数据
像俄罗斯套娃一样,一层又一层,复杂数据轻松管理。
keys_list = ['name', 'age', 'city']default_values = Nonemy_init_dict = dict.fromkeys(keys_list, default_values)print(my_init_dict) # 统一初始值,批量创建
fromkeys,批量初始化,效率满满。
dict_a = {'x': 1, 'y': 2}dict_b = {'y': 3, 'z': 4}{**dict_a, **dict_b} # **操作符,解包合并,新字典诞生
星号解包,合并字典新姿势,简洁而强大。
from collections import defaultdict# 创建一个默认值为列表的字典my_default_dict = defaultdict(list)my_default_dict['fruits'].append('apple')my_default_dict['fruits'].append('banana')print(my_default_dict)
defaultdict自动初始化键对应的值,这里用列表,添加元素变得异常简单,无需每次都检查键是否存在。
import copyoriginal_dict = {'a': [1, 2], 'b': 3}shallow_copy = copy.copy(original_dict)deep_copy = copy.deepcopy(original_dict)# 修改原字典中的列表original_dict['a'][0] = 99print("Original:", original_dict)print("Shallow Copy:", shallow_copy) # 浅拷贝受影响print("Deep Copy:", deep_copy) # 深拷贝不受影响
了解深浅拷贝的区别,对于处理包含可变对象(如列表)的字典至关重要。
my_dict = {'name': 'Alice', 'age': 24}keys_view = my_dict.keys()print("Initial Keys:", keys_view)# 添加新的键值对my_dict['city'] = 'Wonderland'print("Keys after update:", keys_view) # 视图自动更新
字典的keys(), values(), items()返回的是视图对象,可以实时反映字典的变化。
data = [('John', 'Doe', 23), ('Jane', 'Doe', 24)]people = {f"{first} {last}": age for first, last, age in data}print(people)
利用列表中的子列表,通过字典推导式快速构建复杂的映射关系。
my_dict = {}my_dict.setdefault('score', []).append(90)my_dict.setdefault('score', []).append(95)print(my_dict) # 避免了多次检查和初始化
如果键不存在,则初始化并返回该键对应的值,否则直接返回已有的值,非常实用。
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-95921-0.html20 个 Python 字典映射技巧,让数据处理更高效
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 字节面试:说说零拷贝技术实现原理?