今儿再介绍个传家的宝贝,紫金葫芦。没错儿,就是大圣与金角银角斗法使的那宝贝。
银角的葫芦,得喊对了名儿,对方还得应,才有法力。待到起效了,一时三刻又把人化为脓水,凶狠得紧。
咱这太平盛世,不兴这个,请进葫芦的,就好好看个座儿;而且来者是客,不拘那有名没名;就算葫芦里套个葫芦,也未尝不可。
有名字的葫芦,叫做【dict】/【map】,没名字的,就按先来后到列个顺序,叫【list】。排了座位的,座位就是名字。
客人先看看这俩小把戏:
【基础把戏】
list_hulu = [] # 定义一个list
list_hulu.append(1) # list_hulu: [1], 装进一个整数
list_hulu.append('list') # list_hulu: [1, 'list'], 再装进一个字符串
list_hulu.append([]) # list_hulu: [1, 'list', [] ] 装进一个list
list_hulu.append({}) # list_hulu: [1, 'list', []. {}], 装进一个map
list_hulu[1] # 'list', 1 相当于 'list' 元素的名字
dict_hulu = {} # 定义一个dictdict_hulu[1] = 1 # dict_hulu: {1:1}, 装进一个整数,它的名字是1
dict_hulu['str'] = 'list' # dict_hulu: {'str' : 'list', '1':1} , 再装进一个字符串,它的名字是'str'
dict_hulu['list'] = list_hulu # 装进另一个list
dict_hulu['str'] # 'list', str是'list'的名字
好似金箍棒,说长便长;它们啊,是葫芦的两大口诀。这口诀可不是咱瞎说的,葫芦的原材料(Source)上明白写着的。它把葫芦当成一个【object】,还定义了tp_as_number, tp_as_mapping, tp_as_sequence三个方法,后两个,便是map和list口诀。
店里的葫芦都已经成型了,比方说想用list_hulu[‘list’]找出所有的list,该怎么催动这法门呢?
咱们这宝贝与时俱进,支持DIY,客人且看着:
【DIY】
【DIY成果】
super_hulu = ListAsDict()
super_hulu.append(1) # [1]
super_hulu.append(2) #[1, 2]
super_hulu.append('hello') #[1,2,"hello"]
super_hulu.append(["hello", 1]) #[1,2,"hello", ["hello", 1]]
super_hulu["int"] #[1,2]
super_hulu["list"] #[["hello", 1]]
super_hulu["str"] #["hello"]
del super_hulu[1] #[1, "hello", ["hello", 1]]
用【map】进行DIY,兴许能有别个葫芦呢?
不过,这葫芦对名字有个限制。您可以有分身,可以变换,但在Python的世界里啊,从生到死,只能有一个名字(hash),才能住到紫金葫芦里。
但想想也不是坏事儿。行不更名坐不改姓,堂堂正正入座,任谁都得称句好汉,您觉着呢?
Orz
orz(话说你这链接挂了
感谢提醒。。