Python 字典dict 集合set

字典dict

Python内置字典,通过key-value进行存储,字典是无序的,拓展hash

names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。

用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢

>>> d = {'aa':1,'bb':2,'cc':3}
>>> d['aa']   #  可以直接根据名字来查找
1

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢

在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

key-value的存储,是在放进去的时候必须通过key的值算出value的存放位置,这样拿的时候也是根据value的值去内存中拿

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

>>> d
{'aa': 1, 'bb': 2, 'cc': 3}
>>> d['hh']= 88
>>> d
{'aa': 1, 'bb': 2, 'cc': 3, 'hh': 88}

一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

>>> d['lal'] = 88  
>>> d
{'aa': 1, 'bb': 2, 'cc': 3, 'hh': 88, 'lal': 88}

如果key不存在,dict就会报错:
避免key不存在的错误,通过in判断key是否存在
1.

>>> d
{'aa': 1, 'bb': 2, 'cc': 3, 'hh': 88, 'lal': 88}
>>> 'in' in d
False
>>> 'cc' in d
True

get()

>>> d.get('hahah')     # key不存在 ,返回None 在命令行中None是不显示的  
>>> d.get('hahah',-1)    # 可以自定义返回值 -1
>>> d.get('hh')  #key 存在,返回value
88

增加字典元素两种方法
1.

>>> dict1 = {1:223}
>>> dict1[1] = 'ahah'
  1. setdefault
>>> dict1.setdefault(2,'hello')
'hello'
>>> dict1
{1: 'ahah', 2: 'hello'}
>>>

删除Python字典

>>> dict1
{1: 'ahah', '1': 233234, 2: 'hello'}
>>> del dict1[1]     # 用的是方括号  删除指定的key
>>> dict1
{'1': 233234, 2: 'hello'}
>>> del dict1[2]
>>> dict1
{'1': 233234}

>>> dict1.pop('1')   # 用的pop() 
233234
>>> dict1
{}
>>>

清空字典

dict1.clear()

删除字典对象

del dict1

集合set

set同字典相比,只有key,没有value.

原文地址:https://www.cnblogs.com/Python666/p/6642832.html