【Python】字典

文章目录

  • [1. 字典是什么](#1. 字典是什么)
  • [2. 创建字典](#2. 创建字典)
  • [2. 查看 key](#2. 查看 key)
  • [3. 新增 / 修改元素](#3. 新增 / 修改元素)
  • [4. 删除元素](#4. 删除元素)
  • [5. 遍历字典元素](#5. 遍历字典元素)
  • [6. 取出所有 key 和 value](#6. 取出所有 key 和 value)
  • [7. 合法的 key 类型](#7. 合法的 key 类型)
  • 小结

1. 字典是什么

字典是一种存储 键值对 的结构。

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

键(key)值(value) 进行一个一对一的映射,然后就可以根据键,快速找到值。

举个栗子:

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

2. 创建字典

  • 创建一个空的字典,使用 { } 表示字典。
python 复制代码
a = {}
b = dict()

print(type(a))
print(type(b))

运行结果如下:

  • 也可以在创建的同时指定初始值。

键值对之间使用 , 分割,键和值之间使用 : 分割(记得在冒号后面推荐加一个空格),然后使用 print 来打印字典内容

python 复制代码
student = { 'id': 1, 'name': 'zhangsan' }
print(student)

运行结果如下:

  • 为了代码更规范美观,在创建字典的时候往往会把多个键值对,分成多行来书写。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan'
}
  • 最后一个键值对,后面可以写 , 也可以不写。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
}

2. 查看 key

  • 使用 in 可以判定 key 是否在字典中存在。返回布尔值。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
}

print('id' in student)
print('score' in student)

运行结果如下:

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

print(student['id'])
print(student['name'])

运行结果如下:

  • 如果 key 在字典中不存在,则会抛出异常。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
}

print(student['score'])

运行结果如下:

3. 新增 / 修改元素

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

  • 如果 key 不存在,对取下标操作赋值,即为新增键值对
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
}

student['score'] = 90
print(student)

运行结果如下:

  • 如果 key 已经存在,对取下标操作赋值,即为修改键值对的值。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}

student['score'] = 90
print(student)

运行结果如下:

4. 删除元素

  • 使用 pop 方法根据 key 删除对应的键值对。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}

student.pop('score')
print(student)

运行结果如下:

5. 遍历字典元素

  • 直接使用 for 循环能够获取到字典中的所有的 key,进一步的就可以取出每个值了。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}

for key in student:
    print(key, student[key])

运行结果如下:

6. 取出所有 key 和 value

  • 使用 keys 方法可以获取到字典中的所有的 key
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}

print(student.keys())

运行结果如下:

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

  • 使用 values 方法可以获取到字典中的所有 value
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}

print(student.values())

运行结果如下:

注意:此处 dict_values 也是一个特殊的类型,和 dict_keys 类似。

  • 使用 items 方法可以获取到字典中所有的键值对。
python 复制代码
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}

print(student.items())

运行结果如下:

注意:此处 dict_items 也是一个特殊的类型,和 dict_keys 类似。


7. 合法的 key 类型

不是所有的类型都可以作为字典的 key。

字典本质上是一个 哈希表,哈希表的 key 要求是 "可哈希的",也就是可以计算出一个哈希值。

  • 可以使用 hash 函数计算某个对象的哈希值。
  • 但凡能够计算出哈希值的类型,都可以作为字典的 key。

代码如下:

python 复制代码
print(hash(0))
print(hash(3.14))
print(hash('hello'))
print(hash(True))
print(hash(()))      # () 是一个空的元组

运行结果如下:

  • 列表无法计算哈希值。
python 复制代码
print(hash([1, 2, 3]))

运行结果如下:

  • 字典也无法计算哈希值
python 复制代码
print(hash({ 'id': 1 }))

运行结果如下:

小结

字典也是一个常用的结构,字典的所有操作都是围绕 key 来展开的。

需要表示 "键值对映射" 这种场景时就可以考虑使用字典。

相关推荐
用户83562907805118 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户83562907805118 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生1 天前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师1 天前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码1 天前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf1 天前
FastAPI 如何连接 MySQL
后端·python
apocelipes2 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780512 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent2 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6252 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python