晓夏

北漂的女孩

Good Luck To You!

Dict和set类型

浏览量:410

什么是Dict

1、花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

由于dict也是集合,len() 函数可以计算任意集合的大小:

例:新来的Paul同学成绩是 75 分,请编写一个dict,把Paul同学的成绩也加进去。

答:
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59,
    'Paul':75
}
>>> len(d)    4

2、访问dict

一是先判断一下 key 是否存在,用 in 操作符:

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

例:根据如下dict:

d = {
    'Adam': 95,               Adam: 95
    'Lisa': 85,     打印出    Lisa: 85
    'Bart': 59                Bart: 59  
}
答:print 'Adam:',d['Adam']
print 'Lisa:',d['Lisa']
print 'Bart:',d['Bart']

3.dict的特点

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样

dict的缺点是占用内存大,还会浪费很多内容(由于dict是按 key 查找,所以,在一个dict中,key不能重复

dict的第二个特点就是存储的key-value序对是没有顺序的(这说明dict内部是无序的,不能用dict存储有序的集合。

dict的第三个特点是作为 key 的元素必须(不可变)

例:请设计一个dict,可以根据分数来查找名字,已知成绩如下:

Adam: 95,

Lisa: 85,

Bart: 59.

答:d = {
    95:'Adam',
    85:'Lisa'
    59:'BArt'
  }

4.更新dict

dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value。

例:请根据Paul的成绩 72 更新下面的dict:

d = {

    95: 'Adam',

    85: 'Lisa',

    59: 'Bart'

}

答:d[72]='Paul'

5.遍历dict

由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。

例:请用 for 循环遍历如下的dict,打印出 name: score 来。

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
答:for index in d:
    print index+':',d[index];

什么是set

1.dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。(set内部存储的元素是无序的)


例:请用set表示班里的4位同学:Adam, Lisa, Bart, Paul

d = (['Adam','Lisa','Bart','Paul'])

2.访问set

由于上述set不能识别小写的名字,请改进set,使得 'adam' 和 'bart'都能返回True。

d = (['Adam','adam','Bart','bart'])
print 'adam' in d
print 'bart' in d

3.set的特点

set的内部结构和dict很像,唯一区别是不存储value

set存储的元素和dict的key类似,必须是不变对象


例:月份也可以用set表示,请设计一个set并判断用户输入的月份是否有效。

月份可以用字符串'Jan', 'Feb', ...表示。

答:
months = set(['Jan', 'Feb', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov'])
x1 = 'Feb'
x2 = 'Sun'

if x1 in months:
    print 'x1: ok'
else:
    print 'x1: error'

if x2 in months:
    print 'x2: ok'
else:
    print 'x2: error'

4.遍历set

例:请用 for 循环遍历如下的set,打印出 name: score 来。

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
答:for dy in s 
    print dy[0]+':',dy[1]

5.更新set

一是把新的元素添加到set中,二是把已有元素从set中删除。

添加元素时,用set的add()方法,删除set中的元素时,用set的remove()方法(如果删除的元素不存在set中,remove()会报错)

例:针对下面的set,给定一个list,对list中的每一个元素,如果在set中,就将其删除,如果不在set中,就添加进去。

s = set(['Adam', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
答:for dset in L:
 if dset in s:
     s.remone(dset);
 else 
     d.add(dset)
print s


神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。