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

Python数据类型-dict

在这里插入图片描述

Python数据类型-dict

字典是Python中一种非常强大且常用的数据类型,它使用键-值对(key-value)的形式存储数据。

1. 字典的基本特性

  • 无序集合:字典中的元素没有顺序概念
  • 可变(mutable):可以动态添加、修改和删除元素
  • 键必须唯一且不可变:键可以是数字、字符串或元组等不可变类型
  • 值可以是任意类型:包括数字、字符串、列表、甚至其他字典

2. 创建字典

# 空字典
empty_dict = {}
empty_dict = dict()

# 直接初始化
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 使用dict()构造函数
person = dict(name='Alice', age=25, city='New York')

# 从键值对序列创建
person = dict([('name', 'Alice'), ('age', 25), ('city', 'New York')])

3. 访问字典元素

person = {'name': 'Alice', 'age': 25}

# 通过键访问
print(person['name'])  # 输出: Alice

# 使用get()方法(更安全,键不存在时返回None或默认值)
print(person.get('age'))  # 输出: 25
print(person.get('height'))  # 输出: None
print(person.get('height', 170))  # 输出: 170 (默认值)

4. 修改字典

person = {'name': 'Alice', 'age': 25}

# 修改现有键的值
person['age'] = 26

# 添加新键值对
person['city'] = 'New York'

# 使用update()合并字典
person.update({'job': 'Engineer', 'salary': 80000})

print(person)
# 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'job': 'Engineer', 'salary': 80000}

5. 删除元素

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# del语句删除指定键
del person['age']

# pop()删除并返回指定键的值
city = person.pop('city')

# popitem()删除并返回最后添加的键值对(3.7+版本有序)
key, value = person.popitem()

# 清空字典
person.clear()

# 删除整个字典
del person

6. 字典常用方法

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 获取所有键
keys = person.keys()  # dict_keys(['name', 'age', 'city'])

# 获取所有值
values = person.values()  # dict_values(['Alice', 25, 'New York'])

# 获取所有键值对
items = person.items()  # dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

# 检查键是否存在
'name' in person  # True
'height' not in person  # True

# 获取字典长度(键的数量)
len(person)  # 3

# 复制字典
person_copy = person.copy()

7. 字典遍历

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 遍历键
for key in person:
    print(key)

# 遍历键(显式)
for key in person.keys():
    print(key)

# 遍历值
for value in person.values():
    print(value)

# 遍历键值对
for key, value in person.items():
    print(f"{key}: {value}")

8. 字典推导式

# 创建平方字典
squares = {x: x*x for x in range(6)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 条件过滤
even_squares = {x: x*x for x in range(10) if x % 2 == 0}
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

# 键值反转
original = {'a': 1, 'b': 2, 'c': 3}
reversed_dict = {v: k for k, v in original.items()}
# {1: 'a', 2: 'b', 3: 'c'}

9. 嵌套字典

# 字典中可以包含其他字典
employees = {
    'Alice': {
        'age': 25,
        'job': 'Developer',
        'skills': ['Python', 'Java']
    },
    'Bob': {
        'age': 30,
        'job': 'Manager',
        'skills': ['Leadership', 'Project Management']
    }
}

# 访问嵌套字典
print(employees['Alice']['age'])  # 25
print(employees['Bob']['skills'][0])  # Leadership

10. 字典与默认值

from collections import defaultdict

# 普通字典处理不存在的键
counts = {}
for word in ['apple', 'banana', 'apple', 'orange']:
    if word in counts:
        counts[word] += 1
    else:
        counts[word] = 1

# 使用defaultdict简化
counts = defaultdict(int)  # 默认值为0
for word in ['apple', 'banana', 'apple', 'orange']:
    counts[word] += 1

字典是Python中极其重要的数据结构,掌握字典的使用可以大大提高编程效率和代码可读性。

http://www.dtcms.com/a/106334.html

相关文章:

  • 第八届 蓝桥杯 嵌入式 省赛
  • 【ESP32-IDF 笔记】02-LED PWM 配置
  • 运维面试题(ORACLE数据库)--20250401
  • Cesium学习(未完继续)
  • 题解:AT_arc050_c [ARC050C] LCM 111
  • Android的安全问题 - 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor的目的
  • Kotlin 作用域函数:apply、let、run、with、also
  • 掩码图像建模 (MIM) 中的对数似然与交叉熵
  • 品铂科技与宇都通讯UWB技术核心区别对比(2025年)
  • C++:位图和布隆过滤器
  • spring-ai-alibaba第三章ollama集成Tool
  • 【redis】缓存 更新策略(定期、实时生存),缓存预热、穿透、雪崩、击穿详解
  • ERP管理系统:Java+Vue,含源码及文档,一体化管理资源,优化流程,强化企业运营效率
  • React.memo()和 useMemo()的用法是什么,有哪些区别
  • CSS3学习教程,从入门到精通,CSS3 媒体查询实现响应式布局语法指南(21)
  • Unity插件SuperScrollView详解(基础篇)
  • Redis安全与配置问题——AOF文件损坏问题及解决方案
  • 机器人--ros2--IMU
  • 用jQuery和Canvas打造2D版“我的世界+超级玛丽“游戏
  • 知名界面控件DevExpress v24.2.6全新可用|发布重要更改
  • 安卓一些接口使用
  • dbgpt7.0 docker部署
  • Unity工具—默认取消Image和RowImage的Raycast Target
  • Vue3入门
  • 智谱大模型(ChatGLM3)PyCharm的调试指南
  • AI大模型从0到1记录学习 day11
  • 三步构建企业级操作日志系统:Spring AOP + 自定义注解的优雅实践
  • Redis的一些高级指令
  • HBase安装与配置——单机版到完全分布式部署
  • 【蓝桥杯】回文字符串