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

笔记6——字典dict(dictionary)

文章目录

  • 字典dict(dictionary)
    • 定义
    • 特点
    • 常用操作
      • 1.访问值
      • 2.添加键值对
      • 3.修改值
      • 4.删除键值对
      • 5.遍历字典
      • 6.合并字典
    • 性能
    • 应用场景
    • dict和list的区别

字典dict(dictionary)

键 - 值对 (key - value pairs)的形式存储数据

定义

  • 字典使用花括号 {} 来定义,键和值之间用冒号 分隔,不同键值对之间用逗号 , 分隔
  • 也可以通过 dict() 函数定义
# 直接使用{}定义
my_dict = {'name':'echo','age':'24','city':'shanghai'}
# 使用 dict() 函数定义
my_dict2 = dict(name='echo',age='24',city='shanghai')print(my_dict)
print(my_dict2)

在这里插入图片描述

特点

  • 无序性 :键值对没有特定的顺序,不能通过索引来访问,只能通过键来访问对应的值
  • 字典的可变性 :可以添加、删除或修改字典中的键值对
  • 键的唯一性 :键是唯一的,如果多次赋值,会覆盖;
  • 键的不可变性 :dict通过key计算位置的算法即为哈希算法Hash,dict的key必须是不可变对象,如字符串、整数等;但列表list可变,不可作为key

常用操作

1.访问值

  • 通过方括号 [ ]
    如果键不存在,会抛出keyError异常
my_dict = {'name':'echo','age':'24','city':'shanghai'}value1 = my_dict['name']
#value_test = my_dict['test']#如果键不存在,会抛出keyError异常
print(value1)
#print(value_test)

在这里插入图片描述

  • 通过 get() 方法
    如果键不存在,会返回 None ,或者自己 指定的value
my_dict = {'name':'echo','age':'24','city':'shanghai'}value2 = my_dict.get('city')
value3 = my_dict.get('mood')#如果键不存在,会返回None,或者自己指定的value
value4 = my_dict.get('mood','happy')
print(value2)
print(value3)
print(value4)

在这里插入图片描述

  • 通过 in 判断key是否存在
my_dict = {'name':'echo','age':'24','city':'shanghai'}
print('mood' in my_dict)

在这里插入图片描述

2.添加键值对

直接使用 [ ] 赋值来添加新的键值对

my_dict = {'name':'echo','age':'24','city':'shanghai'}
my_dict['wealth'] = 'priceless'
print(my_dict['wealth'])

在这里插入图片描述

3.修改值

通过指定键来修改对应的值

my_dict = {'name':'echo','age':'24','city':'shanghai'}
print(my_dict)my_dict['age'] = 1
print(my_dict['age'])

在这里插入图片描述

4.删除键值对

  • 使用 del 关键字
    使用 del 语句根据键删除对应的键值对,如果键不存在,会抛出KeyError异常
my_dict = {'name':'echo','age':'24','city':'shanghai'}del my_dict['age']
print (my_dict)
# del my_dict['mood'] #如果键不存在,会抛出KeyError异常

在这里插入图片描述

  • 使用 pop() 方法
    pop() 方法根据键删除对应的键值对,并 返回该键对应的值 ,如果键不存在且未指定默认值,会引发 KeyError
my_dict = {'name':'echo','age':'24','city':'shanghai'}value = my_dict.pop('city')
print(value)
print(my_dict) #dict内部存放的顺序和key放入的顺序是没有关系的

在这里插入图片描述

5.遍历字典

  • 遍历键
    通过 keys() 方法遍历键
my_dict = {'name':'echo','age':'24','city':'shanghai'}for key in my_dict.keys():print(key)

在这里插入图片描述

  • 遍历值

使用 values() 方法遍历值

my_dict = {'name':'echo','age':'24','city':'shanghai'}for value in my_dict.values():print(value)

在这里插入图片描述

  • 遍历键值对
    使用 items() 方法遍历键值对
my_dict = {'name':'echo','age':'24','city':'shanghai'}for key,value in my_dict.items():print(f'{key}:{value}')

在这里插入图片描述

6.合并字典

可以使用 update() 方法将一个字典的键值对合并到另一个字典中

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1)  # 输出: {'a': 1, 'b': 3, 'c': 4}

在这里插入图片描述

性能

  • 查找:字典的查找操作平均时间复杂度为 O(1) ,因为底层使用 () 哈希表实现
  • 插入/删除:插入和删除操作的平均时间复杂度也是 O(1)

应用场景

  • 存储配置信息:将各种配置参数以键值对的形式存储在子典中,方便读取和修改
  • 统计词频:同此出现的次数
  • 缓存数据:将计算结果或者从数据库查询到的数据存储到字典中,以提高后续访问速度

dict和list的区别

1. dict

  • 查找和插入的速度极快,不会随着key的增加而慢
  • 需要占用大量的内存,内存耗费大
    2. list
  • 查找和插入的时间随着元素的增加而增加
  • 占用空间小,浪费内存很少

所以, dict是用空间来换取时间的一种方法

http://www.lryc.cn/news/536396.html

相关文章:

  • 【MySQL】InnoDB单表访问方法
  • APP端网络测试与弱网模拟!
  • 【个人开发】deepseed+Llama-factory 本地数据多卡Lora微调
  • Redis7.0八种数据结构底层原理
  • Kafka 高吞吐量的底层技术原理
  • CCFCSP第34次认证第一题——矩阵重塑(其一)
  • 网络工程师 (35)以太网通道
  • O1、R1和V3模型
  • Linux 安装 Ollama
  • docker配置国内源
  • 【leetcode】关于循环数组的深入分析
  • DeepSeek 指导手册(入门到精通)
  • 【力扣题解】【76. 最小覆盖子串】容易理解版
  • Android10 音频参数导出合并
  • 在 Windows 系统中如何快速进入安全模式的两种方法
  • 计算机网络(1)基础篇
  • 自然语言处理NLP入门 -- 第四节文本分类
  • 【redis】数据类型之bitmaps
  • 计算机网络-MPLS转发原理
  • 5. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Nacos
  • 【每日关注】科技圈重要动态
  • 【算法】用C++实现A*算法
  • 细胞计数专题 | LUNA-FX7™新自动对焦算法提高极低细胞浓度下的细胞计数准确性
  • 记一次Self XSS+CSRF组合利用
  • JVM 类加载子系统在干什么?
  • Golang轻松实现消息模板变量替换:text/template
  • DeepSeek模型R1服务器繁忙,怎么解决?
  • 《探秘Windows 10驱动开发:从入门到实战》
  • Golang的容器化部署流程
  • 计算机网络,大白话