Python基础——Dict和Set
字典类型(dict)
以大括号来舍申明{}
1 | x = {'a':1,'b':2,'c':3} |
类似于Java中的map集合,也是用键值对来申明,访问其中的元素需要的不是索引,而是key值。
注意: 通过 key访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
要避免 KeyError 发生,有两个办法:
先判断一下
key是否存在,用in操作符:1
2if 'a' in d:
print d['a']如果 a 不存在,
if语句判断为False,自然不会执行print d['a'],从而避免了错误。使用
dict本身提供的一个get方法,在Key不存在的时候,返回None:1
2
3
4print d.get('a')
1
print d.get('d')
None
dict有以下几个特点:
查找速度快,无论
dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。由于dict是按 key 查找,所以,在一个dict中,key 不能重复。存储的key-value序对是没有顺序的!这和
list不一样作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是
list是可变的,就不能作为 key。
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
1 | d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } |
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。
set类型
set跟Java中的set是一样的,它不仅是无序的,而且他的元素不能包含重复的元素,
创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:
1 | s = set(['A', 'B', 'C', 'C']) |
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
最后,**set存储的元素也是没有顺序的**。
set也可以进行遍历,但是因为它是无序的,所以元素的顺序是有可能不同的
1 | s = set(['Adam', 'Lisa', 'Bart']) |
set更新是调用自带的add()添加函数和remove()删除函数,添加时如果元素已存在,那么他不会添加进去也不会报错,删除时如果元素不存在的话,他是会报错的
1 | s = set([1, 2, 3]) |
删除set中的元素时,用set的remove()方法:
1 | s = set([1, 2, 3, 4]) |
如果删除的元素不存在set中,remove()会报错:
1 | s = set([1, 2, 3]) |
所以用add()可以直接添加,而remove()前需要判断。
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
1 | s1 = set([1, 2, 3]) |







