老王python之基本数据结构——字典
字典是无序的,不能通过偏移来进行存取,只能通过键来进行存取
一、字典
- 字典的格式是
字典 = {'key':value}
,key代表键,value代表key对应的值 - 特点
- 字典是无序的
- 通过键来读取内容
- 可以进行嵌套,方便我们组织多种数据结构
- 字典是可变类型,可以在原地修改内容
- 组成字典的键必须是不可变的数据类型。比如:数字、字符串、元组等,而且比如说以元组作为key,那么元组里面的内容也必须是不可变对象,否则也会报错,而可变对象列表等不能作为键
二、字典的操作
1、创建字典
1、1 :{}方法
>>> ainfo = {'a':11,'b':22} >>> ainfo {'a': 11, 'b': 22}
1.2 : dict()方法
>>> binfo = dict(name='lilei',age=20) >>> binfo {'age': 20, 'name': 'lilei'}
2、添加内容
格式为
dict['key'] = 'value'
>>> binfo['phone'] = 'iphone' >>> binfo {'phone': 'iphone', 'age': 20, 'name': 'lilei'}
3、修改内容
3.1:对已经存在的key进行添加,相当于修改该key对应的value
>>> binfo {'phone': 'iphone', 'age': 20, 'name': 'lilei'} >>> binfo['phone'] = 'vivo' >>> binfo {'phone': 'vivo', 'age': 20, 'name': 'lilei'}
3.2:update方法会覆盖相同key的值
>>> binfo {'phone': 'vivo', 'age': 20, 'name': 'lilei'} >>> binfo.update({'city':'xi\'an','phone':'nokia'}) >>> binfo {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"}
4、删除操作
4.1:del()方法
格式为
del dict['key']
或del dict
,前者表示删除字典中的某个元素,后者表示直接删除了某个字典>>> ainfo = {'a':123,'sex':'girl'} >>> ainfo {'a': 123, 'sex': 'girl'} >>> del ainfo['a'] #删除其中一个元素 >>> ainfo {'sex': 'girl'} >>> del ainfo ##删除该字典 >>> ainfo Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'ainfo' is not defined
4.2 : clear()方法
clear方法表示清空字典里面的所有元素
>>> ainfo = {'a':123,'sex':'girl'} >>> ainfo.clear() >>> ainfo {}
4.3 : pop()方法
通过和列表的pop方法进行比较,并且找到它们的相同点和不同点
字典的pop方法,格式为
dict.pop('key')
,它传入的参数是key值,并且会将这个key值对应的value值返回到界面上,然后从字典中删除
如果传入的参数key不存在,那么也会抛出一个异常,但它可以自己设置传入这个不存在的参数时,返回的内容>>> ainfo = {1:'aa','b':'dd'} >>> ainfo.pop('b') 'dd' >>> ainfo {1: 'aa'} >>> ainfo.pop(404) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 404 >>> ainfo.pop(404,'Not found') 'Not found'
列表的pop方法,格式为
list.pop(index)
,它传入的参数是索引下标,会将这个索引下标对应的值返回到界面上,并从列表中删除
如果传入的参数index是不存在的,那么会抛出异常,提示下标溢出>>> cinfo = [11,22] >>> cinfo.append(66) >>> cinfo [11, 22, 66] >>> cinfo.pop(0) 11 >>> cinfo [22, 66] >>> cinfo.pop(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop index out of range
5、判断成员关系
5.1: in方法
>>> a = {'aa':22,'a':22} >>> 'a' in a True >>> 'b' in a False
5.2: has_key(‘key’)方法
>>> a.has_key('aa') #和上面用的是同一个字典a True >>> a.has_key('aabb') False
6、字典的几个常用方法
6.1、keys()
它返回的是一个列表,里面包含了字典的所有键
>>> binfo {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"} >>> binfo.keys() ['phone', 'age', 'name', 'city']
6.2、valus()
它返回的是一个列表,里面包含了字典的所有值
>>> binfo {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"} >>> binfo.values() ['nokia', 20, 'lilei', "xi'an"]
6.3、items()
它返回的也是一个列表,不过列表中的每一个元素都是一个元组,每个元组对应字典中的key和它对应的value
>>> binfo {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"} >>> binfo.items() [('phone', 'nokia'), ('age', 20), ('name', 'lilei'), ('city', "xi'an")]
- #### 6.4、get()
格式为dict.get('key')
,如果传入的参数key是存在的,那么得到的返回值时这个key所对应的value,如果传入的参数key不存在的,表面上得到的是一个空值,但其实返回的是一个Nonetype类型的值
get方法和pop方法类似,如果想要确保某个不存在的key返回一个值的话,可以自己定义这个返回值
>>> ainfo {1: 'aa'} >>> ainfo.get(1) 'aa' >>> b = ainfo.get('haha') >>> type(b) <type 'NoneType'> >>> ainfo.get('haha',22) 22