dict
list和tuple可以表示顺序集合
['名字']
['成绩']
但是 要根据名字查找成绩不方便
将名字和成绩关联起来组成类似的查找表
给定一个名字 就可以查找成绩
dict 查找表如下
d = {
'adc': 85,
'ap': 80,
'sup': 2
}
花括号表表示这是一个dict
最后一个value:key,的逗号可以省略
由于dict也是集合 len()函数可以计算任意集合的大小
len(d)
一个key:value算一个
访问dict
d[key]来查找对应的value
list必须使用索引返回对应元素
而dict使用key
print (d['sup'])
如果key不存在 就会报错
可以先判断一下key是否存在 用in
if 'adc' in d:
print (d['adc'])
也可以用dict本身提供的一个get方法
在key不存在时返回none
print d.get('adc')
d = {
'adc':85,
'ap':80,
'sup':2
}
print ('adc:', d[adc])
print ('ap:', d[ap])
print ('sup:', d[sup])
dict特点:查找速度快
list:元素越多查找速度越慢
dict缺点:占用内存大 会浪费很多内容
list:占用内存小 但查找速度很慢
key不能重复
存储的key-value序对是没有顺序的
这和list不一样
d = {
'a':1,
'b':2,
'c':3
}
print (d)
{'a':2, 'b':1,'c':3}
打印顺序不一定是我们创建时的顺序
而且不同机器打印的顺序都可能不同
说明dict内部是无序的
不能用dict存储有序的集合
作为key的元素必须不可变
list可变但不能作为key
value是否可变无所谓
d = {
'a':1,
'b':2,
'c':3
}
添加 'e':5
d['e'] = 5
替换 d[a] = 0
将a的value替换为0
遍历dict
和list类似 都可以通过for循环实现
d = {
'a':1,
'b':2,
'c':3
}
for alphabet in d:
print (alphabet,':',d[alphabet])
set
dict的作用是建立一组key和value的映射关系
dict的key是不能重复的
有的时候我们只想要dict的key不关心key对应的value
目的是保证这个集合的元素不会重复
set持有一系列元素 和list很像
但是set的元素没有重复 而且是无序的
这点和dict的key很像
创建set() 调用set并传入一个list
list的元素将作为set的元素
s = set(['A', 'B', 'C'])
打印s之后发现list里元素顺序变了
其实s也是无序的
如果传入相同的元素 则会自动去掉相同的元素
访问set
由于set是无序的集合 所以没法通过索引来访问
访问set中的某个元素实际上就是判断一个元素是否在set中
s = set(['adc','ap','sup'])
用in操作符判断
ap是班里的人吗
'ap' in s
#True
'jun'是里面的吗
'jun' in s
#False
大小写不同会被认为是两个元素
set的内部结构和dict很像 唯一区别是不存储value
因此 判断一个元素是否在dict中很快
set存储的元素和dict的key类似 必须是不变对象
因此 任何可变对象是不能放入set中的
set存储的元素也是没有顺序的
set特点的应用:
周一到周日可以用字符串'MON'等表示
用户输入是否是一个有效的星期
可以用if判断
遍历set
由于set也是一个集合 所以遍历set和遍历list类似
直接用fir循环遍历
s = set(['a','b','c','d'])
for alphabet in s:
print (alphabet)
freeray
set的固定用法是s=set([x1,x2,x3,...]),
即在set()参数位置放list,引用set中的元素时,
可用for遍历。set与tuple组合,
即将set中的每个元素用一个tuple代替,
形式即为s=set([(x1,x2),(x3,x4),(x5,x6)]),
引用时,用for遍历:
for name in s
print (name[0],':',name[1])
此处name代表s当中的一个元素,即
是一个tuple,
再根据索引引用tuple中的元素。
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for name in s:
print (name[0],':',name[1])
更新set
s = set([1,2,3])
s.add(4)
#set([1,2,3,4])
如果添加的元素已经在set中 add()不会报错
但是不会加进去
s.remove(4)
#set([1,2,3])
如果删除的元素不在set中 remove会报错
list和tuple可以表示顺序集合
['名字']
['成绩']
但是 要根据名字查找成绩不方便
将名字和成绩关联起来组成类似的查找表
给定一个名字 就可以查找成绩
dict 查找表如下
d = {
'adc': 85,
'ap': 80,
'sup': 2
}
花括号表表示这是一个dict
最后一个value:key,的逗号可以省略
由于dict也是集合 len()函数可以计算任意集合的大小
len(d)
一个key:value算一个
访问dict
d[key]来查找对应的value
list必须使用索引返回对应元素
而dict使用key
print (d['sup'])
如果key不存在 就会报错
可以先判断一下key是否存在 用in
if 'adc' in d:
print (d['adc'])
也可以用dict本身提供的一个get方法
在key不存在时返回none
print d.get('adc')
d = {
'adc':85,
'ap':80,
'sup':2
}
print ('adc:', d[adc])
print ('ap:', d[ap])
print ('sup:', d[sup])
dict特点:查找速度快
list:元素越多查找速度越慢
dict缺点:占用内存大 会浪费很多内容
list:占用内存小 但查找速度很慢
key不能重复
存储的key-value序对是没有顺序的
这和list不一样
d = {
'a':1,
'b':2,
'c':3
}
print (d)
{'a':2, 'b':1,'c':3}
打印顺序不一定是我们创建时的顺序
而且不同机器打印的顺序都可能不同
说明dict内部是无序的
不能用dict存储有序的集合
作为key的元素必须不可变
list可变但不能作为key
value是否可变无所谓
d = {
'a':1,
'b':2,
'c':3
}
添加 'e':5
d['e'] = 5
替换 d[a] = 0
将a的value替换为0
遍历dict
和list类似 都可以通过for循环实现
d = {
'a':1,
'b':2,
'c':3
}
for alphabet in d:
print (alphabet,':',d[alphabet])
set
dict的作用是建立一组key和value的映射关系
dict的key是不能重复的
有的时候我们只想要dict的key不关心key对应的value
目的是保证这个集合的元素不会重复
set持有一系列元素 和list很像
但是set的元素没有重复 而且是无序的
这点和dict的key很像
创建set() 调用set并传入一个list
list的元素将作为set的元素
s = set(['A', 'B', 'C'])
打印s之后发现list里元素顺序变了
其实s也是无序的
如果传入相同的元素 则会自动去掉相同的元素
访问set
由于set是无序的集合 所以没法通过索引来访问
访问set中的某个元素实际上就是判断一个元素是否在set中
s = set(['adc','ap','sup'])
用in操作符判断
ap是班里的人吗
'ap' in s
#True
'jun'是里面的吗
'jun' in s
#False
大小写不同会被认为是两个元素
set的内部结构和dict很像 唯一区别是不存储value
因此 判断一个元素是否在dict中很快
set存储的元素和dict的key类似 必须是不变对象
因此 任何可变对象是不能放入set中的
set存储的元素也是没有顺序的
set特点的应用:
周一到周日可以用字符串'MON'等表示
用户输入是否是一个有效的星期
可以用if判断
遍历set
由于set也是一个集合 所以遍历set和遍历list类似
直接用fir循环遍历
s = set(['a','b','c','d'])
for alphabet in s:
print (alphabet)
freeray
set的固定用法是s=set([x1,x2,x3,...]),
即在set()参数位置放list,引用set中的元素时,
可用for遍历。set与tuple组合,
即将set中的每个元素用一个tuple代替,
形式即为s=set([(x1,x2),(x3,x4),(x5,x6)]),
引用时,用for遍历:
for name in s
print (name[0],':',name[1])
此处name代表s当中的一个元素,即
是一个tuple,
再根据索引引用tuple中的元素。
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for name in s:
print (name[0],':',name[1])
更新set
s = set([1,2,3])
s.add(4)
#set([1,2,3,4])
如果添加的元素已经在set中 add()不会报错
但是不会加进去
s.remove(4)
#set([1,2,3])
如果删除的元素不在set中 remove会报错