一、选择题
1.Python语句print(type({1:1,2:2,3:3,4:4}))的输出结果是( B )。
A.
C.
print(type({1:1,2:2,3:3,4:4}))

2.以下不能创建字典的语句是( C )。
A.dict1={} B.dict2={3:5}
C.dict3=dict([2,5],[3,4]) D.dict4=dict(([1,2],[3,4]))
- dict1={}
- dict2={3:5}
- dict4=dict(([1,2],[3,4]))
-
- print(dict1)
- print(dict2)
- print(dict4)

C错误的原因是对dict()函数使用的不正确
dict()函数的使用:p132
1.使用dict()函数创建一个空字典并给变量赋值。
- d=dict()
- print(d)

2.使用列表或元组作为dict()函数的参数。
在本题的C中,dict3=dict([2,5],[3,4]),dict()括号里面的参数并不是列表或元组
可以修改为:
- d1=dict(([2,5],[3,4]))
- d2=dict([[2,5],[3,4]])
-
- print(d1)
- print(d2)

3.将数据按“关键字=值”的形式作为参数传递给dict()函数
- d=dict(a=2,b=3)
- print(d)

3.对于字典D={'A':10,'B':20,'C':30,'D':40},对第4个字典元素的访问形式是( D )。
A.D[3] B.D[4] C.D[D] D.D['D']
4.对于字典D={'A':10,'B':20,'C':30,'D':40},len(D)的是( A )。p134
A.4 B.8 C.10 D.12
5.对于字典D={'A':10,'B':20,'C':30,'D':40},sum(list(D.values()))的值是( B )。p137
A.10 B.100 C.40 D.200
- D={'A':10,'B':20,'C':30,'D':40}
-
- print(D.values())
- print(list(D.values()))
-
- print(sum(list(D.values())))

6.以下不能创建集合的语句是( C )。
A.s1=set() B.s2=set(“abcd”)
C.s3={} D.s4=frozenset((3,2,1))
p137:s3={}创建的是字典
7.设a=set([1,2,2,3,3,3,4,4,4,4]),则a.remove(4)的值是( A )。
A.{1, 2, 3} B.{1, 2, 2, 3, 3, 3, 4, 4, 4}
C.{1, 2, 2, 3, 3, 3} D.[1, 2, 2, 3, 3, 3, 4, 4, 4]
p137:集合是一个不重复的集合体
- a=set([1,2,2,3,3,3,4,4,4,4])
- print(a)
- a.remove(4)
- print(a)

8.下列语句执行后的结果是( D )。
- fruits={'apple':3,'banana':4,'pear':5}
- fruits['banana']=7
- print(sum(fruits.values()))
A.7 B.19 C.12 D.15
和第五题一样
9.下列语句执行后的结果是( C )。p136
- d1={1:'food'}
- d2={1:'食品',2:'饮料'}
- d1.update(d2)
- print(d1[1])
A.1 B.2 C.食品 D.饮料
d2.update(d1)
将字典d1的“关键字:值”对添加到字典d2中。d1合并到d2,d1不变,d2变化。若d2的关键字与d1的关键字相同,d2覆盖d1相同的部分。
- d1={'a':1,"b":2,"c":3}
- d2=dict([['a',2],['d',4]])
-
- print(d1)
- print(d2)
-
- d1.update((d2))
- print(d1)
- print(d2)

10.下列Python程序的运行结果是( B )。
- s1=set([1,2,2,3,3,3,4])
- s2={1,2,5,6,4}
- print(s1&s2-s1.intersection(s2))
A.{1, 2, 4} B.set()
C.[1,2,2,3,3,3,4] D.{1,2,5,6,4}
s1&s2的意思是求s1与s2的交集
s1.intersection(s2)的意思也是求s1与s2的交集
二、填空题
1.在Python中,字典和集合都使用 大括号 作为定界符。字典的每个元素由两部分组成,即 关键字和 值 ,其中 关键字 不允许重复。
关键字只能是不可变类型,比如字符串,数字,元组,但不能是列表
- map={1:'a',"b":2,(1,2):'k',"f":[1,2]}
- print(map)
- map={[1,2]:"a"}
- print(map)
2.集合是一个无序、 不重复的数据集,它包括 可变集合 和 不可变集合 两种类型,前者可以通过大括号或 set() 函数创建,后者需要通过 frozenset() 函数创建。
可变集合的创建:
- s1={}
- print(type(s1))
- print("-------------------")
- s2={1,1,2,3,4,4,5,7}
- print(s2)
- print(type(s2))
- print("-------------------")
- s3=set("abcdef")#字符串,列表,元组
- s4=set([1,"a","f",5,6])
- s5=set((6,"5","u",6,6))
- print(s3)
- print(s4)
- print(s5)

不可变集合的创建:
- s1={1,2,3,3,4,7}
- print(type(s1))
- print(s1)
- print("-----------")
- s2=frozenset(s1)
- print(type(s2))
- print(s2)

3.下列语句执行后,di['fruit'][1]的值是 banana 。
- di={'fruit':['apple','banana','orange']}
- di['fruit'].append('watermelon')
- print(di['fruit'][1])
- #print(di)

4.语句print(len({}))的执行结果是 0 。
5.设a=set([1,2,2,3,3,3,4,4,4,4]),则sum(a)的值是 10 。
集合中的元素是不重复的,所以集合a={1,2,3,4}
6.{1,2,3,4} & {3,4,5}的值是 {3, 4},{1,2,3,4} | {3,4,5}的值是 {1, 2, 3, 4, 5},{1,2,3,4} - {3,4,5}的值是 {1, 2} 。
7.设有s1={1,2,3},s2={2,3,5},则s1.update(s2)执行后,s1的值为 {1, 2, 3, 5},s1.intersection(s2)的执行结果为 {2, 3} ,s1.difference(s2)的执行结果为 {1} 。
p141
s.update(s1,s2,s3...)
用集合s1,s2....中的成员修改集合s,即这几个集合的并集
- s1={1,2,3}
- s2={2,3,5}
- print(s1.update(s2))
- print(s1)

s.interection(s1,s2....)
和update函数意思差不多,这个是求交集
- s1={1,2,3}
- s2={2,3,5}
- print(s1.intersection(s2))
- print(s1)

8.下列程序的运行结果是 2 。
- d={1:'x',2:'y',3:'z'}
- del d[1]
- del d[2]
- d[1]='A'
- print(len(d))

9.下面程序的运行结果是 6 。
- list1={}
- list1[1]=1
- list1['1']=3
- list1[1]+=2
- sum=0
- for k in list1:
- sum+=list1[k]
- print(sum)

10.下面程序的运行结果是 9 。
- s=set()
- for i in range(1,10):
- s.add(i)
- print(len(s))

三、问答题
1.什么是空字典和空集合?如何创建?
在Python中,空字典和空集合都是用大括号括起来的。
- dict1={} #在创建空字典时,可以直接用大括号
- dict2=dict() #也可以用dict()函数
- print(type(dict1))
- print(type(dict2))
-
- set1={} #创建空集合时。不能只用一个大括号
- set2=set() #可以用set()函数
- print(type(set1))
- print(type(set2))
-
- print(dict1)
- print(set1)

2.设有列表a=['number','name','score'],b=['21001','denmer',90],写一个语句将这两个列表的内容转换为字典,且以列表a中的元素为关键字,以列表b中的元素为值。
- a=['number','name','score']
- b=['21001','denmer',90]
- dict1=dict(zip(a,b))
- print(dict1)
或者
- a=['number','name','score']
- b=['21001','denmer',90]
- map={}
-
- for i in range(0,min(len(a),len(b))):
- map[a[i]]=b[i]
- print(map)

3.字典的遍历有哪些方法?
(1)遍历字典的关键字
d. keys :返回一个包含字典所有关键字的列表,所以对字典关键字的遍历转换为对列表的遍历。
(2)遍历字典的值
d. values(:返回一个包含字典所有值的列表,所以对字典值的遍历转换为对列表的遍历。
(3)遍历字典的元素
d.items():返回一个包含所有(关键字,值)元组的列表,所以对字典元素的遍历转换为对列表的遍历。
- a={'number':6,'name':"sa",'score':99}
- print(a)
- for i in a.keys():
- print(i)
- for i in a.values():
- print(i)
- for i in a.items():
- print(i)

4.集合有哪两种类型?分别如何创建?
集合包含两种类型:可变集合(set)和不可变集合(frozenset)。
- set1=set((1,2,3))
- print(type(set1))
- set2=frozenset((1,2,3,4))
- print(type(set2))

5.Python支持的集合运算有哪些?集合的比较运算有哪些?集合对象的方法有哪些?p138-p142
6.分别写出下列两个程序的输出结果,输出结果为何不同?
程序一:
- d1={'a':1,'b':2}
- d2=d1
- d1['a']=6
- sum=d1['a']+d2['a']
- print(sum)

程序二:
- d1={'a':1,'b':2}
- d2=dict(d1)
- d1['a']=6
- sum=d1['a']+d2['a']
- print(sum)
