- python中常见数据结构,字典和集合,python中的字典和集合性能是 经过高度优化的一种数据结构,对于python来说非常重要
- 字典是一系列键-key和值-value组成的键值对的元素的集合,在python3.6以后字典是有序的!它将保持元素插入时的先后顺序,长度大小可以改变,元素可以任意删减和改变,相比于列表和元祖,字典的性能更优,特别在查找,添加 和删除操作,字典都能在常数时间复杂度内完成,
- 集合没有键和值的配对,是一系列无序,唯一的元素组合,
- python中字典中的键和值、集合中的键,都可以是混合类型
- 字典和集合的创建方式,
- 字典中元素的访问
1、通过键索引,
2、通过dict.get('key',mess)
- 集合中元素的访问
- 集合不支持索引,因为集合本身是一个hash表,跟列表不一样,所以不支持索引,想要判断一个元素是否在一个字典和集合里面可以使用 value in dict/set。
- 使用 value in dict / set 只能通过 键 来判断,不能通过值来判断
- 字典支持内部元素的增加、删除、更新
- 使用dict.pop(item) 会弹出删除的集合的元素,
- 字典的pop,dict.pop('ele') 字典pop()方法中必须传入一个参数
- 集合的增加,删除,更新操作
- 因为集合是无序的元素集合,所以使用pop()方法删除集合中的元素是随机的,慎用,
- 集合的set.pop()方法中不需要传入参数,传入参数会报错
- 对字典排序,返回一个列表,列表中每一个元素都是由键和值组成的元祖
- 列表和元祖排序时,不管是按照值排序还是按照键排序,都要是同一种类型的数据进行比较,否则会报错,
- 对集合排序,返回一个列表,不管是按照值排序还是按照键排序,都要是同一种类型的数据进行比较,否则会报错,
- 字典的重要方法
>>> d1=d.copy()
>>> d1
{'name': 'Jony', 'age': 23, 'job': 'DEV_TEST'}
>>> d
{'name': 'Jony', 'age': 23, 'job': 'DEV_TEST'}
>>> d.keys()
dict_keys(['name', 'age', 'job'])
>>> d.values()
dict_values(['Jony', 23, 'DEV_TEST'])
>>> d.get('name1','there has not this keys')
'there has not this keys'
>>> d.items()
dict_items([('name', 'Jony'), ('age', 23), ('job', 'DEV_TEST')])
>>> d.pop('name')
'Jony'
>>> d
{'age': 23, 'job': 'DEV_TEST'}
>>> d.popitem()
('job', 'DEV_TEST')
>>> d
{'age': 23}
>>> d1.clear()
>>> d1
{}
>>> d
{'age': 23}
>>> d1.update(d)
>>> d1
{'age': 23}
>>> dict1=dict()
>>> dict1.fromkeys(('name','age','salary'))
{'name': None, 'age': None, 'salary': None}
>>> dict1.fromkeys(('name','age','salary'),'number')
{'name': 'number', 'age': 'number', 'salary': 'number'}
>>> diet={'name':'Tom','age':23}
>>> diet.setdefault('job')
>>> diet
{'name': 'Tom', 'age': 23, 'job': None}
>>> diet.setdefault('name')
'Tom'
>>>
字典遍历,从Python3.6开始遍历字典获得的键值对是有序的
>>> dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
1 直接遍历字典获取键,根据键取值
>>> for key in dic:
... print(key,dic[key])
...
Name Jack
Age 7
Class First
2 利用items方法获取键值,速度很慢,少用!
>>> for k,v in dic.items():
... print(k,v)
...
Name Jack
Age 7
Class First
3 利用keys方法获取键
>>> for key in dic.keys():
... print(key,dic[key])
...
Name Jack
Age 7
Class First
4 利用values方法获取值,但无法获取对应的键。
>>> for value in dic.values():
... print(value)
...
Jack
7
First
>>>