目录
- 一.字典
- 二.字典基础操作
- 字典的访问
- 修改字典
- 删除字典元素
- 三.集合
- 集合的基础操作
- 添加元素
- 移除元素
- 清空集合
一.字典
字典使用键-值(key-value)存储,具有极快的查找速度
字典本身是无无序的
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
>>> dict = {'google':1,'taobao':2,'baidu':3}
键必须是唯一的,是不可改变的,如字符串,数字或元组,这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了
值是可以改变的,可以取任何数据类型
二.字典基础操作
字典的访问
把相应的键放入到方括号中,比如dict[key]
>>> dict = {'google':1,'taobao':2,'baidu':3}
>>> dict['google']
1
注意:访问时不要写成(),否者会出错
>>> dict('google')
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
dict('google')
TypeError: 'dict' object is not callable
但是如果你取的值不存在,就会发生异常,风险很大
>>> dict['JD'] #取不到的Key值
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <module>
dict['JD']
KeyError: 'JD' #异常错误
有没有什么两全的办法有值的时候取值,没有值的时候即使我取不到也不会发生异常
答案是有的,python早就给你准备好了.我们用dict.get()
>>> print(dict.get('JD'))#当取不到值的时候会返回None,而不是异常
None #建议:尽量用dict.get()来代替dict[key]
修改字典
>>> dict = {'google':1,'taobao':2,'baidu':3}
>>>> dict['google'] = 9
>>> dict
{'google': 9, 'taobao': 2, 'baidu': 3}
删除字典元素
>>> del dict['google'] #删除单一元素
>>> dict
{'taobao': 2, 'baidu': 3}
>>> dict.clear() #清空字典
三.集合
集合类型与数学中的集合概念一致
集合元素之间无序,每个元素唯一,不存在相同元素
集合元素不可更改,不能是可变数据类型
建立集合类型用 {} 或 set()
建立空集合类型,必须使用set()
set()只能创建空对象或者可迭代对象
>>> b = set('pypy123')
>>> b
{'p', 'y', '1', '2', '3'} #集合自动进行去重
集合的基础操作
>>> A = {'p','y',123}
>>> B = set('pypy123')
>>> A - B
{123}
>>> A & B
{'p', 'y'}
>>> A ^ B
{123, '1', '2', '3'}
>>> A | B
{'p', 'y', '1', 123, '2', '3'}
添加元素
>>> A = {'p','y',123}
>>> A.add('Facebook') #将元素添加到集合 s 中,如果元素已存在,则不进行任何操作
>>> A
{'Facebook', 'p', 123, 'y'}
>>> A = {'facebook','taobao','JD'}
>>> A.update({'baidu'})
>>> A
{'JD', 'taobao', 'baidu', 'facebook'}
移除元素
>>> A.remove('taobao') #如果元素不存在就会发生错误
>>> A
{'JD', 'baidu', 'facebook'}
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") #用discard删除即使没有元素也不会发生错误
>>> thisset
{'Runoob', 'Google', 'Taobao'}
清空集合
>>> thisset.clear()
>>> thisset
set() #空集合用set()表示