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()函数