字典是无序集合,通过键值对存取,异构,可嵌套,迭代对象。
一个键对应一个值,但是一个值可以对应多个键,所以字典可以看做一个映射表
创建
下面是几种创建字典{'name': 'yjx', 'age': 22, 'school': 'HIT'}
的方法
-
直接创建
D={'name': 'yjx', 'age': 22, 'school': 'HIT'}
-
逐步添加
D={} D['name']='yjx';D['age']=22;D['school']='HIT'
-
键值对,用的比较多,但是key只能算是字符串
D=dict(name='yjx',age=22,school='HIT')
-
其他dict方法
只要是元组构成的列表就可以,zip返回对象就是如此 D=dict(zip(['name','age','school'],['yjx',22,'HIT'])) D=dict([('name','yjx'),('age',22),('school','HIT')])
操作,方法
获取所有Value值:D.values()
返回对象是一个dict_values
对象,可以直接转换为列表,包含D所有的value。
获取所有key值:D.keys()
返回值是dict_keys
对象
获取所有元素:D.item()
返回值是dict_items
对象,是键值对的元组组成的列表
访问:D[key]>value
修改:D[key] = newvalue
如果没有key值则会添加新的键值对
删除:del D[key]
删除指定key值的键值对D.clear()
清空字典
复制:D.copy()
顶层复制
合并字典:D.update(D2)
以D为基字典合并操作,会遍历字典
通过key获取value:D.get(key[,default])
如果key不存在则返回缺省值,默认是None
通过key删除元素:D.pop(key)
会删除键值对,返回值为value;如果key不存在会报错。
删除一堆键值对:D.popitem()
返回值为一个键值对元组,若字典为空则报错
遍历,推导式
假设D={'name': 'yjx', 'age': 22, 'school': 'HIT'}
遍历键:
for k in D:
print(k,end=' ')
>>>name age school
for k in D.keys():
print(k,end=' ')
>>>name age school
遍历值:
for v in D.values():
print(v,end=' ')
>>>yjx 22 HIT
或者遍历键,输出值
for k in D:
print(D[k],end=' ')
>>>yjx 22 HIT
键值一起遍历:
for k,v in D.items():
print(k,v,end='|')
>>>name yjx|age 22|school HIT|
值得注意的是,字典没有自带的方法通过值来索引键,可以通过以下实现:
遍历+条件判断
D={'name': 'yjx', 'age': 22, 'school': 'HIT'}
print([k for k in D if D[k]==22])
>>>['age']
通过推导式来建立字典:
事实上,推导式在字典,列表都大大化简了我们的工作量
D={x:x**2 for x in range(3)}
print(D)
>>>{0: 0, 1: 1, 2: 4}