Python3 字典

专栏地址:最强 Python3 基础

公众号:Python 生产力



前言

字典数据类型,从字面意思上来看就是像字典一样查询的数据类型,其中字典分两部分组成,一部分是字典的键(Key),另一部分是键对应的值(Value)。就像我们查字典的时候需要先查目录的索引部分,再根据索引部分再查对应的内容,而这索引部分就是字典的键(Key),内容则是字典的值(Value)。

字典

那这时候可以参考现实中的字典清楚知道,字典的键其实是不能重复的,因为如果字典的键一重复,那我们就不知道这个重复的键到底是我们想要的哪一个,所以类推到计算机中一样,Key 是不能重复的,这中间计算机保持 Key 的唯一性是用独特的哈希算法保持的,这边只需要简单了解一下就行。同时,键(Key)是不可变的,那这时候我们只能使用不可变类型的数据类型了,如字符串、数字等。在一般情况下,Key 都是使用字符串的。

字典的格式由大括号以及键值对组成。可以看下面的例子,一个键值对由键(Key)、冒号、值(Value)组成。键可以是字符串或数字,也可以是不可变类型的元组

dic1 = {'key1' : 'Python', 'key2' : 123}
dic2 = {1: 123, 2: 'Java', 3: 'Python'}
dic3 = {(1,2): ['Python', 'Java'], (3,): 'C++'}

一、字典操作

1. 查询

字典的查询和列表大同小异,关键的点是字典是使用键(Key)来取相对应的值的,因为一个键只对应一个值(列表这种也算一个值),而且键还是唯一的。所以我们可以根据键来获取相对应的值,而不是像列表等用下标来获取值。注意,这边因为不是用下标来取值,所以也就没有所谓的反向索引了,一切都是用键(Key)来获取。而且要注意的是,键的类型一定要填正确,不正确的类型会保存。

dic1 = {'key1' : 'Python', 'key2' : 123}
dic2 = {1: 123, 2: 'Java', 3: 'Python'}

print(dic1['key1'])
print(dic2[2])

# 输出:
Python
Java

那有的人可能会想,如果键(Key)不是简单的字符串或者数字怎么取值,如键是元组类型。其实都是一样的,如下面的例子,这边的键是元组类型的,那我不管元组里面是什么值,直接把这一整个元组当做一个整体来取值,就相当简单了。不过一般不推荐用这种元组做字典的键。而且,如果元组中有可变类型,则不能用作键(Key)。

dic3 = {(1,2): ['Python', 'Java'], (3,): 'C++'}

print(dic3[(1, 2)])
print(dic3[(3,)])

# 输出:
['Python', 'Java']
C++

如果访问了一个不存在的键值对,则解释器会报错,提示我们键不存在。

dic1 = {'key1' : 'Python', 'key2' : 123}

print(dic1['key3'])

# 输出:
KeyError: 'key3'

2. 修改

字典的更新则是通过修改对应的值方法来修改,而字典的键只能删除或添加,不能做其他更新,因为字典的键是不可变的。

dic1 = {'key1' : 'Python', 'key2' : 123}

dic1['key1'] = 'Java'
print(dic1)
print(dic1['key1'])

# 输出:
{'key1': 'Java', 'key2': 123}
Java

3. 删除

字典键值对的删除可以直接使用 del 关键字,或者使用字典的内置函数 clear() 来清空整个字典

dic1 = {'key1' : 'Python', 'key2' : 123}
dic2 = {'name' : 'Python', 'price' : 123.00}

del dic1['key1']
dic2.clear()

print(dic1)
print(dic2)

# 输出:
{'key2': 123}
{}

二、内置函数

dic = {'name' : 'Python', 'price' : 123.00}
函数名称形式描述举例结果
cleardic.clear()清空字典dic.clear(){}
copydic.copy()浅拷贝并生成一个新的字典dic.copy(){'name': 'Python', 'price': 123.0}
popitemdic.popitem()随机返回一个键值对,使用后进先出规则dic.popitem(){'name': 'Python'}
setdefaultdic.setdefault(key, default=None)如果 key 在字典中则返回对应的值,如果不在则将 key 插入字典中并设置默认值 defaultdic.setdefault('date', '2021'){'name': 'Python', 'price': 123.0, 'date': '2021'}
updatedic.update(dic2)将 dic2 的键值对更新到 dic 中dic2 = {'date': '2021'} dic.update(dic2){'name': 'Python', 'price': 123.0, 'date': '2021'}
keysdic.keys()返回字典中的所有key的视图dic.keys()dict_keys(['name', 'price'])
valuesdic.values()返回字典中的所有value的视图dic.values()dict_values(['Python', 123.0])
itemsdic.items()返回字典的列表视图dic.items()dict_items([('name', 'Python'), ('price', 123.0)])
fromkeysdic.fromkeys(seq[, value])新建一个字典,以seq为键,value为值keys = ('key1', 'key2', 'key3') dic.fromkeys(keys, 20){'key1': 20, 'key2': 20, 'key3': 20}
getdic.get(key)获取 key 对应的 valuedic.get('name')Python
popdic.pop(key)删除 key 对应的键值对dic.pop('name'){'price': 123.0}

总结

字典的操作和其他集合数据类型的有点不一样,是使用键值对来进行操作的,而且字典的键不可以是相同的,相同的情况下插入键值对,后一个值会更新前面一个值。

同时,字典键是不可以使用可变类型的,如列表,虽然可以使用元组作为键,但是如果元组中间接或直接包含了列表,也不可以作为字典的键。


Python 生产力

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

瞎叨叨的一天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值