重要的数据类型Dict和Set
dict通过key 查找value(key和value关联)
花括号{ }表示这是一个dict,然后按照key:value,写出来即可。最后一个key:value的都好可以省略
注意: 单元素的tuple必须在后面多家加一个逗号
dict最后的逗号可以省略
由于dict也是集合,len()函数可以计算任意集合的大小
>>>len(d)
3 注意:一个key-value算一个,因此,dict大小为3
访问dict
可以简单的使用d[key] 的形式来查找对应的value,这和list很像,不同之处是,list必须使用索引返回对应的元素,而dict直接使用key(通过key访问dict的value,只要key存在,dict就返回对应的value,如果key不存在,会直接报错:keyerror)
Dict 的特点:
知识点:dict查找速度快。List查找速度随着元素增加而逐渐下降。
缺点:内存占用大。list慢但内存占用小
dict的第一特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,而list正相反,占用内存小,但是查找速度慢
Dict的第二个特点是存储的key-value序对视没有顺序的!这和list不同(dict是按key查找的,所以在一个dict中,key不能重复)
例如:
d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
>>>print d
{‘Lisa’:85,’Adam’:95,’Bart’:59}
打印的顺序不一定是我们创建时的顺序,而且不同的机器打印的顺序都可能不同,这说明:dict内部是无序的,不能用dict 存储有序的集合
dict的第三个特点是作为key的元素倪新雨不可变,python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为key。但是list是可变的,就不能作为key
不可变这个限制仅作用于key,value是否可变无所谓
更新dict
Dict是可变的,即我们可以随时王dict 中添加新的key-value.例如:
>>>d[‘Paul’]=72
>>>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}
遍历dict
由于dict也是一个集合,所以遍历dict和遍历list类似,都可以通过for循环实现
直接使用for循环可以便利dict的key
>>>d={‘Lisa’:85,’Adam’:95,’Bart’:59}
>>>for key in d:
… print key
…
Adam
Lisa
Bart
由于通过key可以获取对应的value,因此,在循环体内,可以获取到value的值
d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
for key in d:
print key+”:”,d[key]
运行结果:
Lisa: 85
Adma: 95
Bart: 59
Set
Dict的作用是建立一组key和一组value的映射关系,dict的key是不能重复的
Set持有一系列元素,这一点和list很像,但是set的元素没有重复,而且是无序的,这点和dict的key很像
创建set的方式是调用set()并传入一个list,list的元素将作为set的元素
>>>s=set([‘A’ , ’B’ , ’C’])
>>>print s
Set([‘A’ ,’C’,’B’ ])
注意:可以看出打印的顺序与原始的list顺序有可能不同,因为set内部存储的元素是无序的
>>>s=set([‘A’ , ’B’ , ’C’ , ‘C’])
>>>print s
Set([‘A’ ,’C’,’B’ ])
>>>len(s)
3
结果显示:因为set不能包含重复的元素,所以set会自动去掉重复的元素,原来的list有4个元素,但是set只有3个
编程任务:请用set表示班里的4位同学:Adma,Lisa,Bart,Paul
>>>s=set([‘Adma’,’Lisa’,’Bart’,’Paul’])
print s
运行结果:
set([‘Lisa’,’Paul’,’Adma’,’Bart’])
访问set
由于set存储的是无序集合,所以我们没法通过索引来访问,访问Set中的某个元素实际上就是判断一个元素是否在set中,可以用in操作符判断
>>>s=set([‘Adma’,’Lisa’,’Bart’,’Paul’])
>>>’Bart’ in s
True
>>>’Bill’ in s
False
>>>’bart’ in s
False
注意:大小写(区分大小写)
Set的特点:
Set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快,Set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。最后,set存储的元素也是没有顺序的
例如:判断用户输入是否是一个有效的星期?
Weekdays=set([‘Mon’,’Tue’,’Wed’,’Thu’,’Fri’,’Sat’,’Sun’])
X=’???’ #用户输入的字符串
if X in weekdays:
print ‘input ok’
else
print ‘input error’
遍历set
由于set也是一个集合,所以,遍历set和遍历list类似,都可以通过for循环实现
>>>s=set([‘Adma’,’Lisa’,’Bart’])
>>>for name in s:
… Print name
…
Lisa
Adma
Bart
注意:for循环在遍历set是,元素的顺序和list的顺序很可能不同
更新set(add ,remove)
由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:
。是把新的元素添加到set中
。是把已有元素从set中删除(前提是元素存在)
所以用add()可以直接添加,而remove()前需要判断
dict通过key 查找value(key和value关联)
花括号{ }表示这是一个dict,然后按照key:value,写出来即可。最后一个key:value的都好可以省略
![](https://i-blog.csdnimg.cn/blog_migrate/dc03536c312bfe717342da128758af80.png)
注意: 单元素的tuple必须在后面多家加一个逗号
dict最后的逗号可以省略
由于dict也是集合,len()函数可以计算任意集合的大小
>>>len(d)
3 注意:一个key-value算一个,因此,dict大小为3
访问dict
可以简单的使用d[key] 的形式来查找对应的value,这和list很像,不同之处是,list必须使用索引返回对应的元素,而dict直接使用key(通过key访问dict的value,只要key存在,dict就返回对应的value,如果key不存在,会直接报错:keyerror)
![](https://i-blog.csdnimg.cn/blog_migrate/63260838e99e2afc5f07f7636ee1f28e.png)
Dict 的特点:
知识点:dict查找速度快。List查找速度随着元素增加而逐渐下降。
缺点:内存占用大。list慢但内存占用小
dict的第一特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,而list正相反,占用内存小,但是查找速度慢
Dict的第二个特点是存储的key-value序对视没有顺序的!这和list不同(dict是按key查找的,所以在一个dict中,key不能重复)
例如:
d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
>>>print d
{‘Lisa’:85,’Adam’:95,’Bart’:59}
打印的顺序不一定是我们创建时的顺序,而且不同的机器打印的顺序都可能不同,这说明:dict内部是无序的,不能用dict 存储有序的集合
dict的第三个特点是作为key的元素倪新雨不可变,python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为key。但是list是可变的,就不能作为key
不可变这个限制仅作用于key,value是否可变无所谓
![](https://i-blog.csdnimg.cn/blog_migrate/263522e47de0878824ff5e89df70e54c.png)
更新dict
Dict是可变的,即我们可以随时王dict 中添加新的key-value.例如:
>>>d[‘Paul’]=72
>>>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}
遍历dict
由于dict也是一个集合,所以遍历dict和遍历list类似,都可以通过for循环实现
直接使用for循环可以便利dict的key
>>>d={‘Lisa’:85,’Adam’:95,’Bart’:59}
>>>for key in d:
… print key
…
Adam
Lisa
Bart
由于通过key可以获取对应的value,因此,在循环体内,可以获取到value的值
d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
for key in d:
print key+”:”,d[key]
运行结果:
Lisa: 85
Adma: 95
Bart: 59
Set
Dict的作用是建立一组key和一组value的映射关系,dict的key是不能重复的
Set持有一系列元素,这一点和list很像,但是set的元素没有重复,而且是无序的,这点和dict的key很像
创建set的方式是调用set()并传入一个list,list的元素将作为set的元素
>>>s=set([‘A’ , ’B’ , ’C’])
>>>print s
Set([‘A’ ,’C’,’B’ ])
注意:可以看出打印的顺序与原始的list顺序有可能不同,因为set内部存储的元素是无序的
>>>s=set([‘A’ , ’B’ , ’C’ , ‘C’])
>>>print s
Set([‘A’ ,’C’,’B’ ])
>>>len(s)
3
结果显示:因为set不能包含重复的元素,所以set会自动去掉重复的元素,原来的list有4个元素,但是set只有3个
编程任务:请用set表示班里的4位同学:Adma,Lisa,Bart,Paul
>>>s=set([‘Adma’,’Lisa’,’Bart’,’Paul’])
print s
运行结果:
set([‘Lisa’,’Paul’,’Adma’,’Bart’])
访问set
由于set存储的是无序集合,所以我们没法通过索引来访问,访问Set中的某个元素实际上就是判断一个元素是否在set中,可以用in操作符判断
>>>s=set([‘Adma’,’Lisa’,’Bart’,’Paul’])
>>>’Bart’ in s
True
>>>’Bill’ in s
False
>>>’bart’ in s
False
注意:大小写(区分大小写)
Set的特点:
Set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快,Set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。最后,set存储的元素也是没有顺序的
例如:判断用户输入是否是一个有效的星期?
Weekdays=set([‘Mon’,’Tue’,’Wed’,’Thu’,’Fri’,’Sat’,’Sun’])
X=’???’ #用户输入的字符串
if X in weekdays:
print ‘input ok’
else
print ‘input error’
遍历set
由于set也是一个集合,所以,遍历set和遍历list类似,都可以通过for循环实现
>>>s=set([‘Adma’,’Lisa’,’Bart’])
>>>for name in s:
… Print name
…
Lisa
Adma
Bart
注意:for循环在遍历set是,元素的顺序和list的顺序很可能不同
![](https://i-blog.csdnimg.cn/blog_migrate/4661f952290c41a4812c8b68c9dbd43d.png)
更新set(add ,remove)
由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:
。是把新的元素添加到set中
。是把已有元素从set中删除(前提是元素存在)
![](https://i-blog.csdnimg.cn/blog_migrate/0d5b1c7be2784fd157828ed88de0a060.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ccc7f9176ee759bdc3cb218df4eb304a.png)
所以用add()可以直接添加,而remove()前需要判断