续:第(9)节
本文所有引用均来自廖雪峰老师的网站。转载请说明出处。
8. dict
dict 全称为dictionary,其他语言中也称为map,使用key-value对存储,具有极快的查找速度。
例如:
>>> d = { 'A' : 95, 'B' : 90, 'C' : 97}
>>> d['A']
95
注意:d
dict定义时可以赋值,也可以只声明不赋值:
d = {}
classmates = {}
注意括号的种类。dict定义时使用的是花括号
{}
,在取值时用的是[]
,而谈到小括号()
,则是在之前所谈的tuple中有用到。可以使用
d['A']
进行取值,使用d['A'] = 98
进行重新赋值。如何查询某个key是否在dictionary中?
法1:通过in
方法:
>>> 'D' in d
False
法2:get方法:
>>>d.get('A', x)
or
>>>d.get('A')
返回结果是:若存在这个key,则返回其对应的value值。若不存在,则返回x这个值。如果不写x这个参数,则返回None值,而这个None值是不会在终端中显示出来的。
注意:
· dict内部存放的顺序和key放入的顺序是没有关系的
· dict是用空间来换取时间的一种方法
· dict的key必须是不可变对象。因为计算value的存储位置是通对key值进行hash而得到的。
8. set
set和dict类似,也是一组key的集合,但不存储value。
由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合。
例如:
>>> s = set ( [2, 1, 3] )
>>>s
{1, 2, 3}
注意:传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。
set可以看成是数学上的集合,所以可以进行交集、并集等操作。
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。
补充:不可变对象
- 对于不变对象(例如字符串、整数、tuple等)来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
- list是可变对象,可以通过sort()方法进行内部对象的排序整理。
- 有一个replace方法可以将字符串中的一个字母
全部
替换成另一个字母。
总结:
dict和set中key的类型必须是不可变的。因为它要用于hash来得到value的存储位置。
- end of Python 基础 -