Python基础5——dict和set
2018-03-31 18:38
330 查看
dict
Python内置了字典:dict的支持,dict全程dictionary,在其他语言中称为map,只用键-值(key-value)存储,具有极快的查找速度。>>> d = {'jeff':25,'maomao':24,'yuan':26}>>> d['jeff']
25把数据放入dict的方法,除了初始化指定外,还可以通过key放入:>>> d['yuanbao']=18
>>> d
{'yuan': 26, 'jeff': 25, 'yuanbao': 18, 'maomao': 24}
>>> d['yuanbao'] 18由于一个key只能对应一个value,所以多次对一个key放入value,后面的值会把前面的值冲掉
:>>> d
{'yuan': 26, 'jeff': 25, 'yuanbao': 18, 'maomao': 24}
>>> d['yuan']=18
>>> d
{'yuan': 18, 'jeff': 25, 'yuanbao': 18, 'maomao': 24}如果key不存在,dict就会报错:>>> d['zhou']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'zhou'要避免key不存在的错误,有两种方法,一是通过in判断key是否存在:>>> 'zhou' in d
False二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:>>> d.get('zhou')
>>> d.get('zhou',-1)
-1注意:返回None的时候Python的交互式命令不显示结果。
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:>>> d.pop('yuan')
18
>>> d
{'jeff': 25, 'yuanbao': 18, 'maomao': 24}注意:dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
1、查找和插入的速度极快,不会随着key的增加而增加;
2、需要占用大量的内存,内存浪费多。
而list相反:
1、查找和插入的时间随着元素的增加而增加;
2、占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。
set
set和dict类似,也是一组key的集合,但不存储valus。由于key不能重复,所以,在set中没有重复的key。要创建一个set,需要提供一个list作为输入集合:>>> s = set([1,2,3,4,5,6,6])
>>> s
{1, 2, 3, 4, 5, 6}重复元素在set中自动被过滤。
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:>>> s.add(7)
>>> s.add(8)
>>> s.add(8)
>>> s.add(8)
>>> s
{1, 2, 3, 4, 5, 6, 7, 8}通过remove(key)方法可以删除元素:>>> s.remove(1)
>>> s
{2, 3, 4, 5, 6, 7, 8}set可以看成数学意义上的无序和无重复元素的集合,因此两个set可以做数学意义上的交集、并集等操作:>>> s1 = set([1,2,3])
>>> s2 = set([2,3,4,5])
>>> s1 & s2 #交集
{2, 3}
>>> s1 | s2 #并集 {1, 2, 3, 4, 5}
>>> s1 ^ s2 #异或 {1, 4, 5}set和dict唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部”不会有重复元素“。试试把list放入set,看看是否会报错。
>>> s = set([1,2,[1,2,3]]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'再议不可变对象:str是不可变对象,而list是可变对象。对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:>>> a = [1,5,2,4]
>>> a.sort()
>>> a
[1, 2, 4, 5]
>>> a = ['a','q','v','c'] >>> a.sort() >>> a ['a', 'c', 'q', 'v']而对于不可变比如对象,比如str,对str进行操作呢:>>> s = 'zhouboyuan'
>>> s.replace('z','Z')
'Zhouboyuan'
>>> s
'zhouboyuan'虽然字符串有个replace()方法,也确实变出了‘Zhouboyuan’,但变量s最后仍然是zhouboyuan。
相关文章推荐
- python3基础: 元组tuple、 列表list、 字典dict、集合set。 迭代器、生成器
- 【2-5】Python基础——dict和set
- python基础III(dict、set、函数)
- python基础三_dict&set
- Python基础-dict和set
- python基础之dict、set及字符
- python基础31[list+tuple+set+dict+str+file的成员方法]
- python基础之dict和set
- 一、python基础笔记(输入输出、list、touple、dict、set)
- Python基础数据结构之大循环(for list,set,dict,tuple)
- python基础31[list+tuple+set+dict+str+file的成员方法]
- 【Python】基础学习——列表(list),元祖(tuple),字典(dict),字符串(string),集合(set)
- Python3学习笔记【基础3--list,tuple,if条件判断,for/while循环,dict字典,set集合】
- python学习(6)python基础、使用dict和set
- Python3 基础:dict和set
- Python基础知识- list ,tuple ,dict 和 set
- Python基础- dict和set
- 我的python3基础笔记之 【dict和set】 02
- Python基础——list、tuple、dict、set
- Python基础(二)List和tuple、条件判断、dict和set