Python 学习笔记05【字典和结构化数据】

字典是Python内置的数据类型,类似其他语言的 map

字典的索引被称为 键, 键及其关联的值,成为键值对

1 >>> myCat = {'size':'fat', 'color':'gray', 'disposition':'loud'}
2 
3 >>> myCat['size'] #通过类似列表下表方式获取
4 'fat'
5 >>> myCat['color']
6 'gray'

5.1.1 字典与列表

字典中的表项不排序,因此,相同内容(键值对),不同顺序的字典 是一样的。

>>> {'size': 'fat', 'color': 'gray', 'disposition': 'loud'} == {'disposition':'loud','color':'gray','size':'fat'}
True

使用in关键字,可以查看 某个变量值 是否作为键存在于字典中

1 >>> myCat = {'size':'fat', 'color':'gray', 'disposition':'loud'}
2 >>> 'size' in myCat #必须加上'',否则为False # 当然可以 写成 'size' in myCat.keys()
3 True

5.1.2 删除key

pop(key)方法,对应的value也会从dict中删除

>>> mydog_dict = {'name':'huahua','age':1,'gender':'boy'}

>>> mydog_dict.pop('gender')

'boy'

>>> mydog_dict

{'name': 'huahua', 'age': 1}

 

5.1.2 keys(), values() 和 items()方法

1 >>> myCat = {'size':'fat', 'color':'gray', 'disposition':'loud'}
2 >>> keys = myCat.keys()
3 >>> type(keys)
4 <class 'dict_keys'>#keys的类型,不是列表,但是可用于for循环
5 >>> keys
6 dict_keys(['size', 'color', 'disposition'])
1 >>> values = myCat.values()
2 >>> type(values)
3 <class 'dict_values'>
4 >>> values
5 dict_values(['fat', 'gray', 'loud'])#values类型不是列表,但是可用于for循环
1 >>> items = myCat.items()
2 >>> type(items)
3 <class 'dict_items'>#items 不是列表,但是可用于for循环
4 >>> items
5 dict_items([('size', 'fat'), ('color', 'gray'), ('disposition', 'loud')])

虽然,keys(), values(), items()方法返回值都不是列表,但是可通过list()方法将其转成列表,如下所示:

1 >>> dict_list = list(items)
2 >>> type(dict_list)
3 <class 'list'>
4 >>> dict_list
5 [('size', 'fat'), ('color', 'gray'), ('disposition', 'loud')]

5.1.3 检查字典中是否存在键或值(in 或 not in)

5.1.4 get()方法

get(键名称,键不存在时的备用值)

当然,直接使用 字典.[键名称] 也能获取 对应的值,但是如果 键名称 不存在,则该调用直接报错;如果使用ge()方法并设置了备用值,就不会报错

1 >>> myCat = {'size':'fat', 'color':'gray', 'disposition':'loud'}
2 >>> myCat['age']
3 Traceback (most recent call last):
4   File "<pyshell#99>", line 1, in <module>
5     myCat['age']
6 KeyError: 'age'
7 >>> myCat.get('age','age not set')
8 'age not set'

5.1.5 setdefault()方法

为字典的某个键设定默认值

该方法仅第一次调用有效!!!

1 >>> myCat = {'size':'fat', 'color':'gray', 'disposition':'loud'}
2 >>> myCat.setdefault('age',22)
3 
4 >>> myCat
5 {'size': 'fat', 'color': 'gray', 'disposition': 'loud', 'age': 22} # 增加了字典的键值对

5.2漂亮打印

 1 >>> import pprint
 2 >>> pprint.pprint(myCat)
 3 {'age': 22, 'color': 'gray', 'disposition': 'loud', 'size': 'fat'}
 4 >>> myCat = {'size':'fat', 'color':'gray', 'disposition':'loud','size':'fat', 'color':'gray', 'disposition':'loud','size':'fat', 'color':'gray', 'disposition':'loud'}
 5 
 6 >>> pprint.pprint(myCat)
 7 {'color': 'gray',
 8  'color1': 'gray',
 9  'color2': 'gray',
10  'disposition': 'loud',
11  'disposition1': 'loud',
12  'disposition2': 'loud',
13  'size': 'fat',
14  'size1': 'fat',
15  'size2': 'fat'}

 

5.3

List 和 Dict 的对比:

  List Dict
速度
  • 查找和插入速度随着元素增加而边长

 

  • 查找和插入速度快
  • 不会随着key增多而变慢
内存
  • 内存占用少
  • 占用内存多,内存浪费多

 

所以,dict是用空间来换取时间的一种方法。

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key,tuple是不可变的,可以作为key

 

 

 

 

 
posted @ 2019-10-04 21:29  后山前堂客  阅读(165)  评论(0)    收藏  举报