【python】—— 字典

简介: 【python】—— 字典



(一)什么是字典

Python字典是一种可变无序且可嵌套的数据类型,用于存储键值对。字典中的每个键(key)都唯一且不可变,它对应一个值(value)。

啥是键值对? 这是计算机/生活中一个非常广泛使用的概念:

  • 把 键(key) 和 值(value) 进行一个一对一的映射, 然后就可以根据键, 快速找到值.(底层相当于hash)

举个栗子:

  • 学校的每个同学, 都会有一个唯一的学号.
  • 知道了学号, 就能确定这个同学.
  • 此处 "学号" 就是 "", 这个 "同学" 就是 ""

此外字典的创建方式是使用花括号{},并使用冒号将键和值分隔开来。


(二)字典的基本操作

2.1 创建字典

可以通过以下方式创建一个字典:

  • 创建一个空的字典. 使用 { } 表示字典
a = { }     # 空字典
b = dict()  # 空字典
print(type(a))
print(type(b))

输出结果展示:


  • 也可以在创建的同时指定初始值,键值对之间使用 , 分割, 键和值之间使用 : 分割. (冒号后面推荐加一个空格).
student = { 'id': 1, 'name': 'zhangsan' } # 包含两个键值对的字典
print(student)

输出结果展示:


  • 为了代码更规范美观, 在创建字典的时候往往会把多个键值对, 分成多行来书写.
student = {
    'id': 1,
    'name': 'zhangsan'
}

  • 最后一个键值对, 后面可以写 , 也可以不写


  • 此外还可以使用参数来创建字典
student=dict(id=1,name='zhangsan') #左侧是键,右侧是值
print(student)

输出结果展示:


  • 元组可以作为字典中的key来创建字典
t=(10,20,30)
print({t:10}) #t是key,10是value。元祖可以作为字典中的key

 输出结果展示:


  • 列表不可以创建字典


2.2 查找 key

  • 使用 in 可以判定 key 是否在 字典 中存在. 返回布尔值
student = {
    'id': 1,
    'name': 'zhangsan',
}
print('id' in student)
print('score' in student)

输出结果展示:


  • 使用 [ ] 通过类似于取下标的方式, 获取到元素的值. 只不过此处的 "下标" 是 key. (可能是整数, 也可能是字符串等其他类型)
student = {
    'id': 1,
    'name': 'zhangsan',
}
print(student['id'])
print(student['name'])

输出结果展示:  


  • 如果 key 在字典中不存在, 则会抛出异常
student = {
    'id': 1,
    'name': 'zhangsan',
}
print(student['score'])

输出结果展示:  


2.3 新增/修改元素

使用 [ ] 可以根据 key 来新增/修改 value

  • 如果 key 不存在, 对取下标操作赋值, 即为新增键值对
student = {
    'id': 1,
    'name': 'zhangsan',
}
student['score'] = 90  # 添加键为'score',值为'90'的键值对
print(student)

输出结果展示:  


  • 如果 key 已经存在, 对取下标操作赋值, 即为修改键值对的
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
print(student)
student['score'] = 90  # 将score的值修改为90
print(student)

 输出结果展示:  


2.4 删除元素

  • 使用 pop 方法根据 key 删除对应的键值对
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
print(student)
student.pop('score')  # 删除键为'score'的键值对
print(student)

 输出结果展示:  


  • 也可以使用del语句删除字典中的键值对
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
print(student)
del student['score'] # 删除键为'score'的键值对
print(student)

2.5 遍历字典元素

直接使用 for 循环能够获取到字典中的所有的 key, 进一步的就可以取出每个值了

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
# 遍历所有键
for key in student: 
    print(key)
# 遍历所有值
for value in student.values(): 
    print(value)
# 遍历所有键值对
for key, value in student.items():
    print(f'{key}: {value}')

2.6 取出所有 key 和 value

  • 使用 keys 方法可以获取到字典中的所有的 key
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
print(student.keys())

 输出结果展示:  

  • 此处 dict_keys 是一个特殊的类型, 专门用来表示字典的所有 key. 大部分元组支持的操作对于dict_keys 同样适用.

  • 使用 values 方法可以获取到字典中的所有 value
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
print(student.values())

 输出结果展示:  

  • 此处 dict_values 也是一个特殊的类型, 和 dict_keys 类似.

  • 使用 items 方法可以获取到字典中所有的键值对
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
print(student.items())

 输出结果展示:    

  • 此处 dict_items 也是一个特殊的类型, 和 dict_keys 类似.

(三)合法的 key 类型

  • 首先不是所有的类型都可以作为字典的 key.
  • 字典本质上是一个 哈希表, 哈希表的 key 要求是 "可哈希的", 也就是可以计算出一个哈希值
  • 可以使用 hash 函数计算某个对象的哈希值.但凡能够计算出哈希值的类型, 都可以作为字典的 key


  • 列表无法计算哈希值


  • 字典也无法计算哈希值


(四)小结

字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的.需要表示 "键值对映射" 这种场景时就可以考虑使用字典.

相关文章
|
10月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
507 2
|
11月前
|
存储 JSON 数据管理
Python字典:高效数据管理的瑞士军刀
Python字典基于哈希表实现,提供接近O(1)的高效查找,支持增删改查、遍历、合并等丰富操作,广泛应用于计数、缓存、配置管理及JSON处理。其灵活性与性能使其成为数据处理的核心工具。
792 0
|
11月前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
355 0
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
1216 1
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
831 2
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
424 1
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
948 13
|
存储 Java Serverless
【Python】字典
【Python】字典
246 1
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
370 2
|
Python
Python 字典删除下标前两个
Python 字典删除下标前两个
232 1

推荐镜像

更多