首页 > 代码库 > Python中dict的特点、更新dict、遍历dict
Python中dict的特点、更新dict、遍历dict
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:
d = { ‘Adam‘: 95, ‘Lisa‘: 85, ‘Bart‘: 59 }
当我们试图打印这个dict时:
>>> print d {‘Lisa‘: 85, ‘Adam‘: 95, ‘Bart‘: 59}
打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
可以试试用list作为key时会报什么样的错误。
不可变这个限制仅作用于key,value是否可变无所谓:
{
‘123‘: [1, 2, 3], # key 是 str,value是list
123: ‘123‘, # key 是 int,value 是 str
(‘a‘, ‘b‘): True # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
}
最常用的key还是字符串,因为用起来最方便。
Python更新dict
dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value。比如已有dict:
d = { ‘Adam‘: 95, ‘Lisa‘: 85, ‘Bart‘: 59 }
要把新同学‘Paul‘的成绩 72 加进去,用赋值语句:
>>> d[‘Paul‘] = 72
再看看dict的内容:
>>> print d {‘Lisa‘: 85, ‘Paul‘: 72, ‘Adam‘: 95, ‘Bart‘: 59}
如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value:
>>> d[‘Bart‘] = 60 >>> print d {‘Lisa‘: 85, ‘Paul‘: 72, ‘Adam‘: 95, ‘Bart‘: 60}
任务
请根据Paul的成绩 72 更新下面的dict:
d = {
95: ‘Adam‘,
85: ‘Lisa‘,
59: ‘Bart‘
}
参考代码:
d = {
95: ‘Adam‘,
85: ‘Lisa‘,
59: ‘Bart‘
}
d[72]=‘paul‘
Python之 遍历dict
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
>>> d = { ‘Adam‘: 95, ‘Lisa‘: 85, ‘Bart‘: 59 } >>> for key in d: ... print key ... Lisa Adam Bart
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。
任务
请用 for 循环遍历如下的dict,打印出 name: score 来。
d = {
‘Adam‘: 95,
‘Lisa‘: 85,
‘Bart‘: 59
}
参考代码:
d = {
‘Adam‘: 95,
‘Lisa‘: 85,
‘Bart‘: 59
}
for key in d:
print key + ‘:‘ ,d[key]
Python中dict的特点、更新dict、遍历dict