【解释型语言】Python-数据结构-字典

Python基础学习系列


5.1 概述

一种映射(mapping),存储对象的容器

  • 列表存储数据性能好,但查询数据性能差
  • 字典存储数据性能不好,但查询数据性能好

5.1.1 字典结构

字典的存储结构为 键值对(key:value)

  • 一个字典有多个键值对,一个键值对 称为

  • 字典的 可以是 任意对象

  • 字典的 是任意 不可变对象 (int,str,bool,tuple)

  • 不能重复,后插入的同名键会进行值替换

5.2 创建

5.2.1 无参创建

# 创建
d = {}

5.2.2 带参创建

mapping结构: d = {key1:value1,key2:value2,...}

d = {'name':'xxx','x':1,'x':True} # {'name':'xxx'}

d = {1:"asd",2:12,3:23.6,4:True} 
# {1: 'asd', 2: 12, 3: 23.6, 4: True}

d = {True:1,False:'a'} 
# {True: 1, False: 'a'}
d = {True:True,False:123.2} 
# {True: True, False: 123.2}

d = {(1,2):"asd",(2,3):123,(4,5):True}
# {(1, 2): 'asd', (2, 3): 123, (4, 5): True}

5.2.3 dict()函数创建字典

键都是字符串

  1. d = {key1:value1,key2:value2,...}

  2. dict(mapping,key1:value1,key2:value2,...)

  3. dict(iterable,key1:value1,key2:value2,...)

# 1. d = {"key1":"4","key2":""}
d = dict(key1='4',key2='') 

# 2. {'x': 1, 'y': 2, 'z': 3}
d = dict({'x':1,'y':2},z=3)

# 3. {'x': 5, 'y': 6, 'z': 3}
d = dict([('x',5),('y',6)],z=3)

# 3. zip() 创建可迭代对象
numbers3 = dict(dict(zip(['x', 'y', 'z'], [1, 2, 3])))
print('numbers3 =',numbers3)

5.3 判断键是否存在

检查字典中是否包含指定的键,返回 bool

innot in

print('key_name' in d)

5.4 获取值

根据键获取值

[]

dic_name[key_name]

print(d['age'])

通过 [] 获取时,不存在键则抛出异常 KeyError

dict.get(‘key_name’[,default])
  • 若查找的键不存在,则返回 default ,默认为 None

在这里插入图片描述
在这里插入图片描述

5.5 遍历

5.5.1 keys()

返回字典中所有的 key 序列

在这里插入图片描述

5.5.2 values()

返回字典所有的 value 序列

在这里插入图片描述

5.5.3 items()

返回字典中所有的项

for k,v in d.items():
	print(k,'=',v)

5.6 修改

5.6.1 修改值

  • 有则覆盖,不存在则添加
  • dict[‘key_name’] = value

5.6.2 dict.setdefault(key[,default])

向字典中添加 key:value

如果字典中存在 key ,则返回 key ,不会替换

如果字典中不存在 key ,则添加,并设置值为 default

在这里插入图片描述

5.6.3 dict.update({})

将字典中的 key:value 添加到当前字典中

  • 重复的键名会进行值覆盖

在这里插入图片描述

5.6.4 dict.popitem()

随机删除字典中的键值对,一般为最后一个

  • 以元组形式返回删除键值对

5.6.5 dict.pop(key[,default])

根据 key 删除字典中的键值对

  • 将被删除的 value 删除

  • 删除不存在的键值对,抛出异常

  • 指定默认值,再删除不存在的 key ,则直接返回默认值

在这里插入图片描述

5.6.6 dict.clear()

清空字典

5.6.7 dict.copy()

对字典进行浅复制

  • 赋值只是指向同一对象
  • 复制创建副本,不属于同一内存空间

在这里插入图片描述

赋值(浅拷贝):引用对象

dic,copy()(浅拷贝):深拷贝父对象,引用子对象

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AmosTian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值