[Python]dict,set

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会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值