接下去我們學(xué)習(xí)字典類型。
字典我們前面說(shuō)過(guò),它的定義方法是在中括號(hào)內(nèi),用逗號(hào)分割開(kāi)多個(gè)任意類型的值,這里要注意,只是它的值,也就是value可以存任意類型,但是它的key只能是不可變類型。
既然key必須是不可變類型,就說(shuō)明我們不單單可以用字符串來(lái)做字典的key,也可以用整型和浮點(diǎn)型,甚至可以用元組來(lái)做字典的key。
因?yàn)檎?,浮點(diǎn)型以及元組都是不可變類型嘛。
dic = {'aaa': 1, 2: 2, 3.2: 4, (7, 8, 9): 10}
這就是造字典的第一種方式,也是我們最常用的方式,直接用大括號(hào)來(lái)定義。
然后我們來(lái)看,我們定義字典的時(shí)候它背后到底觸發(fā)了什么功能?
還是老規(guī)矩,打印一下它的類型。
dic = {'aaa': 1, 2: 2, 3.2: 4, (7, 8, 9): 10}
print(dic, type(dic))
結(jié)果是dict,那就說(shuō)明它背后其實(shí)調(diào)用了,dict加括號(hào)這個(gè)功能。
然后我們也可以自己調(diào)用這個(gè)dict加括號(hào)功能,然后傳大括號(hào)進(jìn)去。
print(dict({'a': 1, 'b': 2}))
這樣也是可以的。
這是造字典的第二種方式,除了傳大括號(hào)這種格式進(jìn)去,我們還可以這樣傳。傳什么等于什么這種格式,也可以造出字典來(lái)。造出來(lái)的結(jié)果就是,變量名會(huì)變成key,變量的只會(huì)變成字典的value。
print(dict(a=1, b=2, c=3))
這就是造字典的第三種方式,然后我們來(lái)看造字典的第四種方式。
比如我現(xiàn)在有一個(gè)列表。
keys = ['name', 'gander', 'age']
我現(xiàn)在的需求是把這個(gè)字典里的每一個(gè)元素取出來(lái),當(dāng)成是字典的key,然后他們的value就先定義成None。相當(dāng)于的我們要初始化一個(gè)字典,讓這三個(gè)key的值,一開(kāi)始都默認(rèn)為None。
如果用我們已經(jīng)掌握的知識(shí)來(lái)實(shí)現(xiàn)這個(gè)需求的話,我們是不是就只能用for循環(huán)來(lái)做?
keys = ['name', 'gander', 'age']
for key in keys:
dic[key] = None
print(dic)
這樣這個(gè)字典就造出來(lái)了,三個(gè)key的value都為None,但是這樣太繁瑣了,要三行代碼才能實(shí)現(xiàn),我們來(lái)看一種更加簡(jiǎn)單的方法。
先定義一個(gè)空字典,接著在空字典后面點(diǎn)formkeys,然后把前面的keys傳進(jìn)去,接著穿第二個(gè)參數(shù),你想讓key的值都等于什么,就傳什么進(jìn)去,我現(xiàn)在想讓他們的值都等于None,就傳None進(jìn)去,這樣我們就得到了一個(gè)新字典了,把它賦值給變量a,打印一下a。
keys = ['name', 'gander', 'age']
a = {}.fromkeys(keys, None)
print(a)
這樣三行代碼就實(shí)現(xiàn)了剛才的需求。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 字典類型1