【愚公系列】2021年12月 Python教学课程 07-字典Dict

举报
愚公搬代码 发表于 2021/12/12 10:46:40 2021/12/12
【摘要】 一、字典DictPython 的字典数据类型是基于 hash 散列算法实现的,采用键值对(key:value)的形式,根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。字典是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!字典的 key 必须是不可变的对象,例如整数、字符串、bytes 和元组,但使用最多的还是字符串。列表、字典、集合等就不可以作为 ke...

一、字典Dict

Python 的字典数据类型是基于 hash 散列算法实现的,采用键值对(key:value)的形式,
根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。
字典是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!
字典的 key 必须是不可变的对象,例如整数、字符串、bytes 和元组,但使用最多的还
是字符串。列表、字典、集合等就不可以作为 key。同时,同一个字典内的 key 必须是
唯一的,但值则不必。
字典可精确描述为不定长、可变、无序、散列的集合类型。
字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})
中 ,例如:
dic = {key1 : value1, key2 : value2 }

二、字典相关操作

1.创建字典

方式一: 直接创建

>>> dic1 = {'name': 'Tom', 'age': 40}

方式二: 动态创建

>>> dic2 = {} 
>>> dic2['name'] = 'Tom' 
>>> dic2['age'] = 40

方式三: 关键字创建

>>> dic3 = dict(name='Tom', age=40)

方式四: 键/值对创建

>>> dic4 = dict((['name', 'Tom'], ['age', 40])) 
>>> dic4

方式五: 通过 fromkeys 方法来创建

>>> dic5 = dict.fromkeys(['a', 'b'], 0)
>>> dic5

方式六: zip 创建字典

>>> dic6 = dict(zip(['a', 'b'], [1, 2]))
>>> dic6

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然
后返回由这些元组组成的对象。我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
利用 * 号操作符,可以将元组解压为列表。

2.访问字典

字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。字典
采用把相应的键放入方括号内获取对应值的方式取值。

dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
print ("dic['Name']: ", dic['Name'])
print ("dic['Age']: ", dic['Age'])

如果访问字典里没有的键,会抛出异常:

>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"]
Traceback (most recent call last):
 File "<pyshell#7>", line 1, in <module>
 dic["address"]
KeyError: 'address'

3.增加和修改

增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个 key 只能
对应一个值,所以,多次对一个 key 赋值,后面的值会把前面的值冲掉。

>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"] = "Shanghai"
>>> dic["address"] = "Beijing"
>>> dic["Age"] = 18
>>> dic
{'Name': 'Jack', 'Age': 18, 'Class': 'First', 'address': 'Beijing'}

要统计字典内键的个数,可以使用 Python 内置的 len()函数:

dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> len(dic)

4.删除字典元素、清空字典和删除字典

使用 del 关键字删除字典元素或者字典本身,使用字典的 clear()方法清空字典。

>>> dic
{'Name': 'Jack', 'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> del (dic['Name']) # 删除指定的键
>>> dic
{'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> a = dic.pop('Class') # 弹出并返回指定的键
>>> a
'First'
>>> dic
{'Name': 'Jack', 'Age': 7}
>>> dic.clear() # 清空字典
>>> dic
{}
>>> del (dic) # 删除字典本身
>>> dic
Traceback (most recent call last):
 File "<pyshell#20>", line 1, in <module>
 dic
NameError: name 'dic' is not defined

5.字典的重要方法

下表中列出了字典的重要内置方法。其中的 get、items、keys 和 values 是核心中的核
心,必须熟练掌握!

方法 作用
clear() 删除字典内所有元素
copy() 返回一个字典的浅复制
fromkeys() 创建一个新字典,以序列 seq 中元素做字典的键
get(key) 返回指定键的值,如果值不在字典中,则返回default 值
items() 以列表返回可遍历的(键, 值) 元组对
keys() 以列表返回字典所有的键
values() 以列表返回字典所有的值
pop(key) 删除并返回指定 key 的值
popitem() 随机删除并返回字典内某个键的值
setdefault(key, default=None) 和 get()类似,但如果键不存在于字典中,将会添加键并将值设为 default
update(dict2) 把字典 dict2 的键/值对更新到 dict 里

6.遍历字典

遍历字典获得的键值对是随机无序的!以下的遍历方法必须全部熟练掌握。

dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
# 1 直接遍历字典获取键,根据键取值
for key in dic:
 print(key, dic[key])
# 2 利用 items 方法获取键值,速度很慢,少用!
for key,value in dic.items():
 print(key,value)
#3 利用 keys 方法获取键
for key in dic.keys():
 print(key, dic[key])
#4 利用 values 方法获取值,但无法获取对应的键。
for value in dic.values():
 print(value)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。