• 预备
  • 基础语法
  • 容器类型
  • 函数
  • 面向对象
  • 输入输出
  • 进程控制
  • 线程控制
  • 正则表达式
  • 网络编程
  • 图形界面
  • 常见问题
  • API 帮助手册

  • 设置

3319

17 分钟

#字典(dict)

字典通过哈希表(Hash Table)实现,是一种高效的数据结构,查找元素、插入元素、删除元素都具有较快的速度。

字典的字面量使用花括号({})包裹一组 键(key)-值(value)对 表示,例如:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 }
HashTablescore_listscore_listbucket1Bucket 1key: Tomvalue: 88score_list->bucket1Tombucket2Bucket 2key: Jerryvalue: 99score_list->bucket2Jerrybucket3Bucket 3key: Spikevalue: 66score_list->bucket3Spike

类型标注 dict[str,int],表示类型是 键(key)类型为 str ,值(value)类型为 int 的字典

字面量中的 TomJerrySpike 是键(Key),889966 是值(Value)。

通过字典后跟方括号([])键(key)访问元素,例如:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } print(score_list) print('Jerry 的成绩是', score_list['Jerry'])
Loading...

在数据量较大时,相较于列表,查找时不仅简单,而且速度也要更快。

# 通过列表与元组的嵌套保存成绩单 score_list:list[tuple[str, int]] = [('Tom', 88), ('Jerry', 99), ("Spike", 66)] # 通过循环查找 Jerry 的成绩 index:int = 0 while index < len(score_list): if score_list[index][0] == 'Jerry': print('Jerry 的成绩是', score_list[index][1]) break index += 1 else: print("没有找到 Jerry 的成绩")
Loading...

#通过 in 判断 key 是否存在

如果尝试读取一个不存在的 key,会产生错误:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } print(score_list['Tuffy'])
Loading...

可以通过 in 来判断 key 是否在字典中:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } print('Tuffy' in score_list) print('Tuffy' not in score_list)
Loading...

#增加或修改元素

字典后跟方括号([])键(key)可以增加或修改元素:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } score_list['Spike'] = 77 # Spike 已经存在,因此修改元素的值 score_list['Tuffy'] = 33 # Tuffy 不存在,因此增加元素 print(score_list)
Loading...

#删除元素

通过 pop 方法可以删除字典元素:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } score_list.pop('Jerry') print(score_list)
Loading...

#清空字典

通过 clear 方法可以清空列表:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } score_list.clear() # 清空列表 print(score_list)
Loading...

#合并字典

通过 update 方法,可以合并另一个字典的元素:

schoole_score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } class1_score_list:dict[str,int] = { 'Tom': 77, 'Tuffy': 33, } schoole_score_list.update(class1_score_list) # 将 class1_score_list 合并入 schoole_score_list,class1_score_list 同名键的值将覆盖 schoole_score_list print(schoole_score_list)
Loading...

#复制字典

和列表一样,直接将字典赋值给另一个变量,将会互相影响,如果不希望这样,就需要复制字典:

score_list:dict[str,int] = { 'Tom': 88, 'Jerry': 99, 'Spike': 66 } shadow:dict[str,int] = score_list # 引用源字典 shadow['Spike'] = 77 # 通过 shadow 修改,score_list 也受到影响 shadow2:dict[str,int] = dict(score_list) # 创建新字典 shadow2['Spike'] = 55 # 通过 shadow2 修改,score_list 不受到影响 print(score_list) print(shadow) print(shadow2)
Loading...

创建于 2025/4/11 03:41:55

更新于 2025/4/29 18:31:56