当前位置: 首页 > news >正文

Python 字典的用法和技巧

字典的创建与初始化

Python 字典是一种可变容器模型,可存储任意类型对象。字典的每个键值对用冒号分隔,键值对之间用逗号分隔,整个字典包括在花括号中。

# 创建一个空字典
empty_dict = {}# 创建一个包含键值对的字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

字典的访问与修改

通过键可以访问字典中的值,如果键不存在,会抛出 KeyError 异常。可以使用 get 方法来避免异常,并返回默认值。

# 访问字典中的值
print(my_dict['name'])  # 输出: Alice# 修改字典中的值
my_dict['age'] = 26
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}# 使用 get 方法访问不存在的键
print(my_dict.get('gender', 'Unknown'))  # 输出: Unknown

字典的遍历

可以使用 for 循环遍历字典的键、值或键值对。

# 遍历字典的键
for key in my_dict:print(key)# 遍历字典的值
for value in my_dict.values():print(value)# 遍历字典的键值对
for key, value in my_dict.items():print(f"{key}: {value}")

字典的合并

可以使用 update 方法将一个字典的键值对合并到另一个字典中。如果键已存在,则更新其值。

# 合并两个字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1)  # 输出: {'a': 1, 'b': 3, 'c': 4}

字典的推导式

字典推导式是一种简洁的创建字典的方法,类似于列表推导式。

# 使用字典推导式创建字典
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典的排序

字典本身是无序的,但可以通过 sorted 函数对字典的键或值进行排序。

# 对字典的键进行排序
sorted_keys = sorted(my_dict.keys())
print(sorted_keys)  # 输出: ['age', 'city', 'name']# 对字典的值进行排序
sorted_values = sorted(my_dict.values())
print(sorted_values)  # 输出: [26, 'Alice', 'New York']

字典的嵌套

字典可以嵌套其他字典,形成复杂的数据结构。

# 创建一个嵌套字典
nested_dict = {'person1': {'name': 'Alice', 'age': 25},'person2': {'name': 'Bob', 'age': 30}
}# 访问嵌套字典中的值
print(nested_dict['person1']['name'])  # 输出: Alice

字典的删除

可以使用 del 语句删除字典中的键值对,或使用 pop 方法删除并返回指定键的值。

# 删除字典中的键值对
del my_dict['city']
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26}# 使用 pop 方法删除并返回值
age = my_dict.pop('age')
print(age)  # 输出: 26
print(my_dict)  # 输出: {'name': 'Alice'}

字典的默认值

可以使用 collections.defaultdict 来创建一个默认值字典,当访问不存在的键时,返回默认值。

from collections import defaultdict# 创建一个默认值为 0 的字典
default_dict = defaultdict(int)
default_dict['a'] += 1
print(default_dict)  # 输出: defaultdict(<class 'int'>, {'a': 1})

 

字典的浅拷贝与深拷贝

使用 copy 方法可以进行字典的浅拷贝,使用 copy.deepcopy 可以进行深拷贝。

import copy# Original dictionary with nested structure
original_dict = {'name': 'Alice','age': 30,'address': {'street': '123 Main St','city': 'Wonderland'}
}# Create a shallow copy of the original dictionary
shallow_copied_dict = original_dict.copy()# Create a deep copy of the original dictionary
deep_copied_dict = copy.deepcopy(original_dict)# Modify the nested dictionary in the original
original_dict['address']['city'] = 'New Wonderland'# Print out all dictionaries
print("Original Dictionary:")
print(original_dict)print("\nShallow Copied Dictionary:")
print(shallow_copied_dict)print("\nDeep Copied Dictionary:")
print(deep_copied_dict)

字典的键值查找

可以使用 in 关键字检查字典中是否存在某个键或值。

my_dict = {'name': 'Alice','age': 30,'city': 'Wonderland'
}# 检查字典中是否存在某个键
print('name' in my_dict)  # 输出: True# 检查字典中是否存在某个值
print('Alice' in my_dict.values())  # 输出: True

 

字典的键值去重

可以使用 set 对字典的键值进行去重。

my_dict = {'person1': 'Alice','person2': 'Bob','person3': 'Alice',  # 重复的值'person4': 'Charlie','person5': 'Bob'      # 重复的值
}unique_values = set(my_dict.values())
print(unique_values)  

 

相关文章:

  • 古诗生成器
  • FastAPI 支持文件下载和上传
  • 数据结构篇--优先级队列排序--实验报告
  • 城市停车场光伏-储能-充电系统耦合机制与效益分析
  • Ubuntu20.04部署KVM
  • Ubuntu22.04 系统安装Docker教程
  • 如何使用两块硬盘作为 Ubuntu24 的系统盘,实现坏掉一块不影响系统运行。
  • 域名与DNS详解
  • ROS 配置环境中的变量讲解
  • 第21天-pyttsx3语音播放功能
  • 视觉基础模型
  • 工程项目交付质量低?如何构建标准化管理体系?
  • 真实世界中的贝叶斯网络:Bootstrap、模型平均与非齐次动态的科研应用
  • Python Ray 扩展指南
  • 微信小程序AI大模型流式输出实践与总结
  • Windows在PowerShell或CMD运行 curl 命令报错 解决办法 (zx)
  • 8 种快速易用的Python Matplotlib数据可视化方法
  • 嵌入式STM32学习——串口USART 2.0(printf重定义及串口发送)
  • LM-BFF——语言模型微调新范式
  • 算法--js--电话号码的字母组合
  • 建设银行辽宁省分行网站/怎么做属于自己的网站
  • 做拼货商城网站/企业网络营销推广方案策划
  • 北京哪里可以做网站/企业培训心得