python数据结构-字典和集合

  • python中常见数据结构,字典和集合,python中的字典和集合性能是 经过高度优化的一种数据结构,对于python来说非常重要
  • 字典是一系列键-key和值-value组成的键值对的元素的集合,在python3.6以后字典是有序的!它将保持元素插入时的先后顺序长度大小可以改变,元素可以任意删减和改变,相比于列表和元祖,字典的性能更优,特别在查找,添加 和删除操作,字典都能在常数时间复杂度内完成,
  • 集合没有键和值的配对,是一系列无序,唯一的元素组合,
  • python中字典中的键和值、集合中的键,都可以是混合类型
  • 字典和集合的创建方式,

python数据结构-字典和集合_第1张图片

  • 字典中元素的访问

1、通过键索引,

2、通过dict.get('key',mess)

python数据结构-字典和集合_第2张图片

  • 集合中元素的访问
    • 集合不支持索引,因为集合本身是一个hash表,跟列表不一样,所以不支持索引,想要判断一个元素是否在一个字典和集合里面可以使用 value in dict/set。
    • 使用 value in dict / set 只能通过 键 来判断,不能通过值来判断

python数据结构-字典和集合_第3张图片

  • 字典支持内部元素的增加、删除、更新
  • 使用dict.pop(item) 会弹出删除的集合的元素,
  • 字典的pop,dict.pop('ele')  字典pop()方法中必须传入一个参数

python数据结构-字典和集合_第4张图片

  • 集合的增加,删除,更新操作
  • 因为集合是无序的元素集合,所以使用pop()方法删除集合中的元素是随机的,慎用,
  • 集合的set.pop()方法中不需要传入参数,传入参数会报错

python数据结构-字典和集合_第5张图片

  • 对字典排序,返回一个列表,列表中每一个元素都是由键和值组成的元祖
  • 列表和元祖排序时,不管是按照值排序还是按照键排序,都要是同一种类型的数据进行比较,否则会报错,

python数据结构-字典和集合_第6张图片

  • 对集合排序,返回一个列表,不管是按照值排序还是按照键排序,都要是同一种类型的数据进行比较,否则会报错,

python数据结构-字典和集合_第7张图片


  • 字典的重要方法

python数据结构-字典和集合_第8张图片

>>> 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
>>> 

 

你可能感兴趣的:(python3)