一. dict的形式
dict={
key:value,
key:value,
key:value,
...
}
(1) dict是集合,用len()可以计算集合的大小。
(2) dict是用花括号{}表示的,注意与list(用方括号[]表示)和tuple(用元括号()表示)的区别
(3) 最后一对键值末尾可以不加逗号
注意: 一个 key-value 算一个长度
二. 访问dict
(1)方法一
1.方式:
通过 key 访问 dict 的value。
2.举例:
>>> d = {
... 'Adam': 95,
... 'Lisa': 85,
... 'Bart': 59
... }
>>> print d['Adam']
95
3.注意:
key是否正确,如不正确则会报错:NameError
解决方法:
if 'Paul' in d:
... print d['Paul']
...
>>>
如果 ‘Paul’ 不存在,if语句判断为False,自然不会执行 print d[‘Paul’] ,从而避免了错误。
(2)方法二
1.方式:
dict.get(key),key存在返回value,否则返回None
2.举例:
>>> print d.get('Bart')
59
>>> print d.get('Paul')
None
三.dict的特点
(1) 速度快
无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
缺点:占用内存大
(2) 无序
存储的key-value序对是没有顺序的!这和list不一样.
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
打印时:
>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}
打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
(3) 元素不可变
作为 key 的元素必须不可变,value是否可变无所谓。
list是可变的,就不能作为 key。
{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True
# key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
}
注: 一般key用字符串表示,因为用起来方便.
(4) key是唯一的
dict的作用是建立一组 key 和一组 value 的映射关系,则dict的key是不能重复的。
四.dict的更新
方式:
通过dict[key]=value
原因:dict是可变的
举例:
>>> d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
>>> d['Paul'] = 72 #通过dict[key]=value
>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}
注意:如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value
五.dict的遍历
方式:
for key in dict的方式
举例:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
... print key
...
Lisa
Adam
Bart
六. set
为什么要用set:
有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
set的适用场合:
判断是否存在
(1)set的创建
方式:调用 set() 并传入一个 list,list的元素将作为set的元素
>>> s = set(['A', 'B', 'C'])
>>> print s
set(['A', 'C', 'B'])
注意:set内部存储的元素是无序的。
(2)set的特点
1.set不能包含重复的元素
>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3
结果显示,set会自动去掉重复的元素,原来的list有4个元素,但set只有3个元素。
2.不存储value
判断一个元素是否在set中速度很快。
3.key不可变
4.无序
(3)set的访问
因为set存储的是无序集合,所以我们只能判断一个元素是否在set中。
>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
>>> 'Bart' in s
True
>>> 'Bill' in s
False
(4)set的遍历
方式:通过 for 循环实现。
>>> s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
... print name
...
Lisa
Adam
Bart
(5)set的更新
1.添加:set的add()方法
>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])
注意:如果添加的元素已经存在于set中,add()不会报错,但是不会加进去
2.删除:set的remove()方法
>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])
如果删除的元素不存在set中,remove()会报错
用add()可以直接添加,而remove()前需要判断。