(12)基本对象类型--字典相关方法/函数(P2)

1. 基本对象类型(python里面一切皆是对象)

(接前文)


1.7.4 字典常用函数/方法

1.7.4.1 len() 计算字典元素个数,即键的总数

示例:

>>> dict = {'Name': 'xiaoming', 'Age': 7, 'Class': 'First'}

>>> len(dict)


1.7.4.2 str()输出字典,以可打印的字符串表示

>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

>>> str(dict)  #输出结果"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"


1.7.4.3 clear() 清除字典

注意清空字典与赋值空字典去区别,与删除字典的区别

>>>d1 = {1: 'A', 2:'X'}

>>>d1.clear() #原数据被清空,d1变为空字典,即{},注意和下面赋值空字典的区别

>>>d1 = {1: 'A', 2:'X'}

>>>d1 = {} #原数据没有被清除,变为垃圾

>>>del d1 #删除字典,内存中d1这个引用也不存在了


1.7.4.4 fromkeys() 创建新字典,以序列seq 中元素做字典的键

创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

语法:

dict.fromkeys(seq[, value])

参数

seq -- 字典键值列表。

value -- 可选参数, 设置键序列(seq)对应的值,默认为 None。

返回值:该方法返回一个新字典。示例:

>>> seq = ('zhangsan', 'lisi', 'wangwu')

>>> student_score = dict.fromkeys(seq,90)  #以seq中每个元素作为键,创建默认值都为90的字典

>>> student_score  #输出 {'zhangsan': 90, 'lisi': 90, 'wangwu': 90}

>>>student_score = {}.fromkeys(seq,90)  #同上

>>> student_score1 = dict.fromkeys(seq) #不设置默认值

>>> student_score1 #输出{'zhangsan': None, 'lisi': None, 'wangwu': None},字典键值对中值都为None


1.7.4.5 get() 返回指定键的值

get() 函数返回指定键的值,如果值不在字典中返回默认值。

语法:dict.get(key, default=None)

示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> student.get('name')  #返回'zhangsan'

>>> student.get('name1')  #返回None

>>> student.get('name1','Nobody')  #返回'Nobody'

说明:get()方法与直接用student('name')获得值不同,若没有对应的键,不会抛异常,而是返回默认值。


1.7.4.6 setdefault() (与get方法类似)区别是若没有则插入新键值对

语法:dict.setdefault(key, default=None)

参数

key -- 查找的键值。

default -- 键不存在时,设置的默认键值。

示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> student.setdefault('age',12)  #返回9,字典中有'age'键

>>> student.setdefault('weight',50) #返回50,且在字典中新增键值对'weight':50


1.7.4.7 key in/not in dict键是否存在于字典中

如果键在字典 dict 里返回 true,否则返回 false。

not in 操作符刚好相反,如果键在字典 dict 里返回 false,否则返回 true。

示例:

student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

if 'age' in student :

    print('age key is exist')

else:

print('age key is not exist')


1.7.4.8 items() 以列表返回可遍历的(键, 值) 元组数组

示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> student.items() #输出 dict_items([('name', 'zhangsan'), ('sex', 'male'), ('age', 9)]) ,类型是dict_items

>>> list(student.items())  #转成list类型,[('name', 'zhangsan'), ('sex', 'male'), ('age', 9)]

>>> tuple(student.items()) ##转成tuple类型,(('name', 'zhangsan'), ('sex', 'male'), ('age', 9))

单独输出键和值,示例说明:

student = {'name': 'zhangsan','sex': 'male','age': 9}

for k, v in student.items():

    print("\nKey is " + k)

    print("Value is " + str(v))

#返回结果:

Key: last

Value: fermi

Key: first

Value: enrico

Key: username

Value: efermi

注意:返回的结果次序不一定和字典定义时的次序相同。字典是通过键来定位数据,和键值对次序无关。


1.7.4.9 keys()和values() 返回所有键/值元组

items()方法是同时返回键值对元组。key()只返回键元组, values()只返回值元组

示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> student.keys()  #返回dict_keys(['name', 'sex', 'age']),使用list()或tuple()转换函数可转换成对应类型

>>> student.values()  #返回dict_values(['zhangsan', 'male', 9]),使用list()或tuple()转换函数可转换成对应类型


1.7.4.10 update() 字典参数 dict2 的 键/值对更新到字典 dict中

键没有则添加,若键存在,则更新对应的值

语法:dict.update(dict2)。示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> other_info = {'weight': 50, 'hobby': 'sleep'}

>>> student.update(other_info)

>>> student  #输出{'name': 'zhangsan', 'sex': 'male', 'age': 9, 'weight': 50, 'hobby': 'sleep'}

重复的键值对(键和值都相同)会被忽略,示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> other_info = {'age': 9, 'hobby': 'sleep'} #若有重复的键值对(键和值都相同),则忽略,添加不重复的

>>> student.update(other_info)

>>> student  #输出{'name': 'zhangsan', 'sex': 'male', 'age': 9, 'hobby': 'sleep'}

键重复,但值不同会替换原来的值

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> other_info = {'age': 10, 'hobby': 'sleep'}

>>> student.update(other_info)

>>> student  #{'name': 'zhangsan', 'sex': 'male', 'age': 10, 'hobby': 'sleep'},替换了'age'值为10,追加了'hobby': 'sleep'


1.7.4.11 pop() 删除key对应的值,返回值为被删除的值

key值必须给出,否则返回default值。

语法:pop(key[,default])

参数

key: 要删除的键值

default: 如果没有 key,返回 default 值

示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 10, 'hobby': 'sleep'}

>>> student.pop('hobby')  #删除'hobby':'sleep'键值对,返回'sleep'

>>> student.pop('age1')  #异常,没有响应的键,必须指定没有找到时的返回值,如下:

>>> student.pop('age1','not found')  #返回'not found'


1.7.4.12 popitem() 随机删除字典最后一对键和值,并返回它

返回一个键值对(key,value)形式,按照 LIFO(Last In First Out 后进先出法) 顺序规则,即最末尾的键值对。

由于字典是无序存储,最后一对键和值并不能确定具体键值,除非知道字典中元素的所有进出轨迹。

如果字典已经为空,报KeyError异常。

示例:

>>> student = {'name': 'zhangsan', 'sex': 'male', 'age': 9}

>>> student.popitem()  #返回 ('age', 9) ,类型是tuple

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容