下面是老师给的一个练习题
自定义字典类:classDict。完成下面的功能:
dictA=classdict({你需要操作的字典对象})
1、删除字典的key:del_dictkey(key)
2、判断键是否在字典里,如果存在则返回对应的值,不存在则返回“不存在”:judge_dictkey(key)
3、返回key组成的列表:get_dictkey() 返回类型为list
例如:a为classdict的实例,数据为{"水果": "香蕉", "学历": "本科", "职业": "骑手"}
删除'学历',输出{'水果': '香蕉', '职业': '骑手'}
判断'水果'是否为key,输出'香蕉'
输出该实例的关键字为:['水果', '职业']
以下是我完成这个习题后学到的一些东西的总结:
一、定义类以后都要有一个__init__(self)的函数 其中self也就代表这个函数本身
def __init__(self,dictA):
pass
二、删除字典的key 可以采用 dictA.pop(key,None)命令,pop(key1)删除key1这个键 返回键key1对应的值,pop(,value)第二个参数是当字典里面没有你给定的键的时候返回的值,如果不写且又没有要删除的这个键 则抛出异常
a={'水果':'香蕉','学历':'本科','职业':'骑手'}
a.pop(1)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a.pop(1)
KeyError: 1
a.pop('水果')
'香蕉'
三、要返回key组成的列表 首先可以用dict.keys()把所有的键拿出来 这时候返回的是一个字典 他是无序的 不利于遍历 所以把他转换成列表 方法是 list(dict.keys()) 这时候只要使用append()函数 把这个列表的值遍历加入空列表中。 其实直接print(list(self.dictA.keys()))就可以得到答案了 但是之前做的作业里面很多次遇到取出字典的键 返回的字典无序的问题
a={'水果':'香蕉','学历':'本科','职业':'骑手'}
b=a.keys()
b[1]
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
b[1]
TypeError: 'dict_keys' object is not subscriptable
四、完整代码
class ClassDict():
def __init__(self,dictA):
self.dictA=dictA
def del_dictkey(self,key):
self.dictA.pop(key,None)
print (self.dictA)
def judge_dictkey(self,key):
if (key in self.dictA) :
print(self.dictA[key])
else:
print ('不存在')
def get_dictkey(self):
print(list(self.dictA.keys()))
a=ClassDict({'水果':'香蕉','学历':'本科','职业':'骑手'})
a.del_dictkey('学历')
a.judge_dictkey('水果')
a.get_dictkey()
结果:
{'水果': '香蕉', '职业': '骑手'}
香蕉
['水果', '职业']