class Furnishing:#创建一个类(继承于基类object) def __init__(self, room):#初始化room self.room = room class Sofa(Furnishing):#继承于Furnishing pass class Bed(Furnishing):# pass def map_the_home(home):#定义一个函数,传入home参数进去 res = {}#创建一个空字典 for obj in home:#遍历home room = obj.room#赋值room if room in res:#如果res字典中有room,为真 res[room].append(obj)#把obj添加到相对应k中 else:#为假 res[room] = [obj]#相当于在字典中添加值,和为真是一样的效果,都是找到对应的k,并把Value添加进去 return res#返回res def counter(home):#定义counter函数,把参数home传入进去 res_dict = {'Bed' : ['Beds' , 0], 'Bookshelf': ['Bookshelves', 0], 'Sofa' : ['Sofas' , 0], 'Table' : ['Tables' , 0]}#定义一个字典 for obj in home:#遍历home print(obj.__class__.__name__)#通过在home列表中的obj类的属性找到slf.room的值,其中__class__.__name__是返回类名 res_dict[obj.__class__.__name__][1] += 1#找到字典中Value列表中具体的元素,也就是后面的数字+1 for value in res_dict.values():# print("%s: %d" % (value[0], value[1]))#打印出Value中的所有元素,因为类型不一样。所以分开写 if __name__ == "__main__":#入口 home =[]#定义一个空列表 home.append(Bed('Bedroom'))#列表中添加Bed实例 home.append(Sofa('Living Room'))#列表中添加Sofa实例 print(map_the_home(home))#之所以要用print,是因为并没有执行,只是简单加载函数(如果这里不用print也可以,但是要在map_the_home这个函数中把return res 改成print(res)) counter(home)#调用counter()函数
python代码分析05
猜你喜欢
转载自blog.csdn.net/qq_37181884/article/details/81255664
今日推荐
周排行