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

【Python 字典】基础到进阶的用法

以下是 Python 中字典(dict)的创建方法、常用属性和方法的总结,涵盖基础到进阶的用法:


一、字典的创建方法

1. 直接赋值(最常用)
person = {"name": "Alice", "age": 30, "city": "New York"}
2. 使用 dict() 构造函数
# 通过键值对创建
person = dict(name="Bob", age=25, city="London")# 通过二元组列表创建
data = [("name", "Charlie"), ("age", 35)]
person = dict(data)
3. 字典推导式
squares = {x: x**2 for x in range(1, 6)}  # 结果:{1:1, 2:4, 3:9, 4:16, 5:25}
4. 合并多个字典(Python 3.9+)
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
merged = dict1 | dict2  # 结果:{'a':1, 'b':3, 'c':4}(后者覆盖前者)

二、常用属性与方法

1. 常用属性
  • .keys():返回所有键的视图
    keys = person.keys()  # 输出:dict_keys(['name', 'age', 'city'])
    
  • .values():返回所有值的视图
    values = person.values()  # 输出:dict_values(['Alice', 30, 'New York'])
    
  • .items():返回所有键值对的视图
    for key, value in person.items():print(f"{key}: {value}")
    

2. 基础操作
  • 获取值
    name = person["name"]          # 直接键访问(键不存在时报错)
    age = person.get("age", 0)     # 安全获取(不存在返回默认值0)
    
  • 修改/添加键值对
    person["age"] = 31       # 修改已有值
    person["country"] = "USA" # 添加新键值对
    
  • 删除键值对
    del person["city"]       # 删除键(不存在时报错)
    value = person.pop("age", 0)  # 安全删除(返回删除的值或默认值)
    person.clear()           # 清空字典
    

3. 进阶方法
  • .update():合并字典(覆盖重复键)
    person.update({"age": 40, "job": "Engineer"})  # 合并新数据
    
  • .setdefault():安全获取键值(若不存在则设置默认值)
    phone = person.setdefault("phone", "N/A")  # 若"phone"不存在,添加并设为"N/A"
    
  • .copy():创建浅拷贝
    new_dict = person.copy()  # 复制字典(非引用)
    
  • .popitem():删除并返回最后一对键值(Python 3.7+ 后为 LIFO)
    key, value = person.popitem()  # 删除最后一个插入的键值对
    

4. 条件检查
# 检查键是否存在
if "name" in person:print("Name exists!")# 检查值是否存在
if "Alice" in person.values():print("Alice found in values")

三、实际场景示例

1. 统计词频
text = "apple banana apple orange banana apple"
words = text.split()
word_count = {}for word in words:word_count[word] = word_count.get(word, 0) + 1print(word_count)  # 输出:{'apple':3, 'banana':2, 'orange':1}
2. 配置管理
config = {"host": "localhost","port": 8080,"debug": True,"plugins": ["logger", "monitor"]
}# 动态更新配置
config.update({"port": 8000, "timeout": 30})
3. 数据转换
user_ids = [101, 102, 103]
user_names = ["Alice", "Bob", "Charlie"]# 转换列表为字典
users = {id: name for id, name in zip(user_ids, user_names)}
# 输出:{101: 'Alice', 102: 'Bob', 103: 'Charlie'}

四、与其他数据结构的交互

1. 转换为 JSON
import json
json_data = json.dumps(person)  # 字典转 JSON 字符串
2. 从列表创建字典
headers = ["name", "age", "city"]
values = ["Alice", 30, "New York"]person = dict(zip(headers, values))  # {'name':'Alice', 'age':30, 'city':'New York'}

五、注意点

  1. 键不可变:字典的键必须是不可变类型(如 strinttuple)。
  2. 无序性(Python 3.7 前):Python 3.7+ 后字典保持插入顺序,但不要依赖此特性做排序。
  3. 效率:字典的查找复杂度为 O(1),适合高频查询操作。

掌握这些方法后,字典将成为你在 Python 中处理键值对数据的核心工具!

http://www.xdnf.cn/news/620533.html

相关文章:

  • 矩阵方程$Ax=b$的初步理解.
  • Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题
  • 面向超大规模模型的提示词工程
  • UE5 图片导入,拖到UI上变色
  • 解决 cursor 中不能进入 conda 虚拟环境
  • PDF 转 JPG 图片小工具:CodeBuddy 助力解决转换痛点
  • 实现tdx-hs300-mcp
  • 【动态规划】简单多状态(二)
  • RIP 协议实验全记录:从配置到问题解决
  • HTTP基本概述
  • 在WPF程序中设置背景图片
  • ModbusRTU转profibusDP网关与RAC400控制器快速通讯
  • 【大模型面试每日一题】Day 27:自注意力机制中Q/K/V矩阵的作用与缩放因子原理
  • 计算机网络中的路由算法:互联网的“路径规划师”
  • 笔记本电脑右下角wifi不显示,连不上网怎么办?
  • 30-消息队列
  • .NET ORM开发手册:基于SqlSugar的高效数据访问全攻略
  • LangChain构建RAG的对话应用
  • Windows 11 电源计划进阶——通过异类策略优化大小核CPU调度
  • 机器学习的一些基本概念
  • DNS Server在高可用高并发系统中的应用
  • 基于cornerstone3D的dicom影像浏览器 第二十二章 mpr + vr
  • 如何选择支持AI接入的开发语言与框架
  • 错误原因详解
  • windows10重装ssh无法下载
  • List<Integer> list=new ArrayList<>()
  • SpringAI 大模型应用开发篇-纯 Prompt 开发(舔狗模拟器)、Function Calling(智能客服)、RAG (知识库 ChatPDF)
  • 万亿参数背后的算力密码:大模型训练的分布式架构与自动化运维全解析
  • 开源与闭源之争:AI时代的创新博弈与未来抉择
  • 记录将网站从http升级https