2021-08-20-Python笔记(九)-字典

字典理解

  1. 字典又称dictionary,简称dict----官方称为Mapping type
  2. 字典是一种数据结构,又称为映射,字典的作用和列表类似,都是用来存储对象的容器。
  3. 与列表的区别:列表存储数据性能很好,但是查询数据性能很差
  4. 在字典中每一个元素都有唯一的名字,通过这个唯一的名字可以快速查找到指定的元素,字典的查询效率很高
  5. 字典都是以键值对进行存储,个人理解python中的字典,非常类似于java中的枚举

字典创建

  1. 字典创建语法

语法
使用{}创建字典
d={key:value,key:value,key:value}

d={'name':'张三','age':18}
print(d)
print(d['name'])

{‘name’: ‘张三’, ‘age’: 18}
[Finished in 0.3s]

  • 字典的值可以是任意对象,但是字典的key只能是不可变对象,且同一个字典内字典的key是不能重复的

字典的键可以为:int,str,bool,tuple

  1. 获取字典中的值
d={'name':'张三','age':18}
print(d)
print(d['name'])

{‘name’: ‘张三’, ‘age’: 18}
张三
[Finished in 0.2s]

  • 如果使用了字典中不存在的键,会报keyError

实战中应用字典

字典的创建

  1. 使用dict()函数来创建字典
    • 这种方式创建的字典key都是字符串
d=dict(name='张三',age=13,sex='男')
print(d)

{‘name’: ‘张三’, ‘age’: 13, ‘sex’: ‘男’}
[Finished in 0.2s]

  1. 可以将一个包含双值子序列的序列转换为字典
    • 为什么是双值子序列?双值:值是序列里面只有两个值,因为key:value,一个为key,一个为value
    • 如果序列中的元素也是序列,我们就称这个元素为子序列

双值子序列:例子
[(1,2),(2,3)]

d=dict([(1,2),(2,3)])
print(d)

{1: 2, 2: 3}
[Finished in 0.3s]

字典常用函数

  1. len()用于获取字典的键值对个数
  2. in 和 not in 检查字典中是否包含指定的键,not in 检查字典中是否不包含指定的键
  3. 获取字典中的值
    • 这种方式取值,如果不存在这个key会报KeyError的异常错误

dict[key]

  • 还可以通过get(key,default)函数来获取值,好处就是当key不存在,不会报KeyError,会报None,其中如果default参数可选,如果找不到key,会返回default
d=dict([(1,2),(2,3)])
print(d.get(2,4))

字典修改

  1. 修改字典
    • 如果修改的key不存在,就相当于增加一个新的key,存在即覆盖,不存在就添加

dict[key]=修改的值

  • 还可以使用setdefault(key,default):如果key存在于字典中,则返回key的值,不会对字典做任何操作,否则添加这个key,并设置value
  1. update([other]):将其他字典中的key-value添加到当前字典中,如果存在相同的key,则,值会被后者替换
d={1:2,2:3}
c={3:4,2:5}
d.update(c)
print(d)

{1: 2, 2: 5, 3: 4}
[Finished in 0.3s]

字典删除与清空

  1. 删除字典元素
    • 可以使用del来删除字典中的key-value

语法:
del dict[key]

d={1:2,2:3}
del d[1]
print(d)

{2: 3}
[Finished in 0.2s]

  1. 使用popitem()进行随机删除,但是总是删除最后一个

使用popitem()删除后,返回被删除的key-value,但是返回的是一个元祖,第一个是key,第二个是value,如果使用popitem()删除一个空字典也会报错

d={1:2,2:3}
d.popitem()
  1. 使用pop(key,default),根据key来进行删除
    • 被删除的value会被返回
    • 如果删除不存在的key会抛出异常,如果指定了默认值,在删除不存在的key时不会报错,而是返回默认值
d={1:2,2:3}
print(d.pop(1,'这是默认值'))
  1. 使用clear()用来清空字典

字典copy

  1. 使用copy()对字典进行浅复制

浅复制:这里指的是复制的深度只有一层,或两层,不会全部完全的复制,比如在字典中,使用copy()复制字典,意味着创建一个新的对象,地址是不同的。但是如果字典里面套字典,通过测试会发现,内层的字典并不是独立的,而与原值具有相同的地址空间,如下面的例子,复制后虽然是不同对象,但是赋值猪八戒后,两个对象的值都变了,说明是浅复制

d={'a':'b','b':{'name':'孙悟空','age':14},'c':'c'}
d2=d.copy()
print(d,id(d))
print(d2,id(d2))
d2['b']['name']='猪八戒'
print(d,id(d))
print(d2,id(d2))

{‘a’: ‘b’, ‘b’: {‘name’: ‘孙悟空’, ‘age’: 14}, ‘c’: ‘c’} 2312860404992
{‘a’: ‘b’, ‘b’: {‘name’: ‘孙悟空’, ‘age’: 14}, ‘c’: ‘c’} 2312860405056
{‘a’: ‘b’, ‘b’: {‘name’: ‘猪八戒’, ‘age’: 14}, ‘c’: ‘c’} 2312860404992

{‘a’: ‘b’, ‘b’: {‘name’: ‘猪八戒’, ‘age’: 14}, ‘c’: ‘c’} 2312860405056

[Finished in 0.2s]

字典遍历

  1. keys()方法返回字典的所有key,该方法会返回一个序列,序列中返回字典的所有key,可以通过遍历key返回字典中的值
d={'a':'1','b':'2','c':'3'}
for k in d.keys():
    print(k,d[k])
  1. values():该方法会返回一个序列,序列中保存有字典的值:缺点是只能看到value
for v in d.values():
    print(v)
  1. items():该方法会返回字典中所有的项,它会返回一个序列,序列包含双值子序列,双值分别是key和value。返回的是元祖
d={'a':'1','b':'2','c':'3'}
print(d.items())
for k,v in d.items():
    print(k,'=',v)

dict_items([(‘a’, ‘1’), (‘b’, ‘2’), (‘c’, ‘3’)])

a = 1

b = 2

c = 3

[Finished in 0.1s]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值