字典一直都是算法中很常用的,对于计算速度以及算法优化都具有很好的效果,虽然用的多,但是关于字典的一些知识,我还是记录下来,共自己还有大家一起学习。
1、什么是字典?
可以理解为字典是一个可变容器模型,可以存放任意类型对象,如字符串,列表,元组等
字典由key(键)和value(值)组成,形如{key:value}
2、创建字典
字典的创建有两种方式,第一种就是使用{},另一种就是使用内嵌函数dict(),比如
>>> info = {}
>>> type(info)
<class 'dict'>
>>> info = dict()
>>> type(info)
<class 'dict'>
两种格式的类型都是字典,下面用上面两种方式来创建字典。
>>> info = {'name':'sky'}
>>> info
{'name': 'sky'}
>>> info = dict(name='sky')
>>> info
{'name': 'sky'}
两种方式中第二种更加的优雅,更加规范,但是对于一种特殊情况,第二种方法就不适合了,比如
>>> key = 'name'
>>> info = {key:'sk'}
>>> info
{'name': 'sk'}
>>> info = dict(key='sk')
>>> info
{'key': 'sk'}
对于这种情况,就会出现一个错误。除了上面的两种初始化方法,字典的fromkeys()方法也可以实现初始化字典。
注:fromkeys方法可以从 列表 中获取元素作为 键 并用None或fromkeys方法的第二个参数初始化,例如
>>> info = {}.fromkeys(['name','age'])
>>> info
{'name': None, 'age': None}
>>> info = dict().fromkeys(['name','age'])
>>> info
{'name': None, 'age': None}
上面是对于fromkeys()没有传入第二个参数,最后返回的是None,但是我们传入参数时,就有
>>> info = {}.fromkeys(['name','age'],'sk')
>>> info
{'name': 'sk', 'age': 'sk'}
>>> info = {}.fromkeys(['name','age'],'sk')
>>> info
{'name': 'sk', 'age': 'sk'}
这种方法更适合用于对同一属性进行赋值,比如性别男用1代表,性别女用0代表,然后对全班的学生性别进行赋值,就可以用到这种方法。
3、获取键值(优雅的)
>>> info = {'name':'sk','age':'25'}
>>> info['name']
'sk'
>>> info['age']
'25'
>>> info['hh']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'hh'
从上面可以发现,当key存在的时候,可以正常返回我们value,但是当key不存在时,就返回个KeyError;字典中有个内嵌函数get(),当key不存在时,返回None,比如
>>> info = {'name':'sk','age':'25'}
>>> info.get('name')
'sk'
>>> info.get('age')
'25'
>>> print(info.get('hh'))
None
>>> info.get('hh','xx')
'xx'
从上面的程序中可以发现当key不存在时,get()会返回第二个参数的值,没有则返回None
4、更新或添加值
设置一个空字典info = dict(),下面将数据添加进空字典里
>>> info = dict()
>>> info['name'] = 'sk'
>>> info['age'] = '25'
>>> info
{'name': 'sk', 'age': '25'}
除了上面的添加方式以外,update亦可以实现更新或添加数据。
>>> info
{'name': 'sk', 'age': '25'}
>>> info
{'name': 'sk', 'age': '25'}
>>> info.update({'name':'sl','age':'28'})
>>> info
{'name': 'sl', 'age': '28'}
使用了update方法将原来的字典进行了更新,从这里是不是可以很直观的看出字典的key的关键性,可以随意key对应的value进行更新,但是不能改变key值,也可以添加新的key及其value,而且这种方式更规范,更正式。
5、字典删除
字典删除的方式有两种,一种是del方法,一种是pop()函数方法
5.1 del
>>> info
{'hh': 'xx', 'name': 'sk', 'age': 25}
>>> del info['hh']
>>> info
{'name': 'sk', 'age': 25}
这样就将{‘hh’:‘xx’}这一键值对删除了,下面看看pop的方法
5.2 pop()函数
>>> info
{'hh': 'xx', 'name': 'sk', 'age': '25'}
>>> info.pop('hh')
'xx'
>>> info
{'name': 'sk', 'age': '25'}
从上面的程序中可以看出,pop是将一个键值取出来,然后删除,而del是直接删除。
6、常见操作
对于一个字典,我们经常做的就是去除字典所有的keys,以及所对应的value。这里常用的两个函数有keys以及items()
>>> info
{'name': 'sk', 'age': '25'}
>>> info.keys()
>>> for i,j in info.items():
... print(i,":",j)
...
name : sk
age : 25
第六部分是在项目中经常用到的一种字典方式。