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