接著我們繼續(xù)學(xué)習(xí)字典的類型轉(zhuǎn)換。
dict這個(gè)方法和列表的list方法一樣,同樣也可以把迭代對(duì)象,也就是可以被for循環(huán)的類型轉(zhuǎn)換成字典類型,但前提是這個(gè)可迭代對(duì)象的每一個(gè)元素里都是存的兩個(gè)值才可以。
比如我定義一個(gè)列表l,它是可迭代對(duì)象對(duì)吧,然后它里面存的元素,每一個(gè)元素都必須是兩個(gè)值,也就是說(shuō)里面必須嵌套一個(gè)容器類型。
比如我嵌套一個(gè)元組,這個(gè)元組里寫兩個(gè)值,一個(gè)是key,一個(gè)是value,然后再嵌套一個(gè)列表也是可以的。
l = [('name', '于謙'), ['age', 18]]
print(dict(l))
結(jié)果就轉(zhuǎn)成字典了,要注意必須是這種格式才可以轉(zhuǎn),你可以外面是元組,里面嵌套列表也可以,只是里面嵌套的值都是成對(duì)的就行。
如果我里面嵌套三個(gè)值的話,就直接報(bào)錯(cuò)了。
l = [('name', '于謙'), ['age', 18], ['a', 'b', 'c']]
print(dict(l))
如果是一個(gè)值,也會(huì)報(bào)錯(cuò)。
l = [('name', '于謙'), ['age', 18], ['a']]
print(dict(l))
我們接下去看字典的一些基本操作。
首先就是按key取值和按key改值。這沒什么可講的,和列表一樣,只不過(guò)列表是按索引取值和改值。和列表不一樣的是如果key不存在,字典是可以按key增加值的。
而在列表里面,如果索引不存在的話,你為其賦值的話就會(huì)直接報(bào)錯(cuò)。
我先定義一個(gè)字典,然后增加一個(gè)值。打印下看。
dic = {'a': 1, 'b': 2}
dic['c'] = 3
print(dic)
我們?cè)賮?lái)看取值,取值有兩種操作,第一種取值操作比較簡(jiǎn)單,不多說(shuō)了。
dic = {'a': 1, 'b': 2}
print(dic['a'])
我們繼續(xù)看取值的第二種用法。
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.get('a'))
這種取值方法和上面的方法相比,如果字典里沒有這個(gè)key,那么打印結(jié)果就是None。而上面的方法,字典里沒有key,那么就會(huì)直接報(bào)錯(cuò)。
我就不多演示了。你們自己可去試試。
字典沒有像列表那樣還給我們提供append和insert這種功能。
有的同學(xué)就想問(wèn),如果我要插入值怎么辦呢?
其實(shí)列表是有序的,我們要取值必須通過(guò)它的索引排序來(lái)進(jìn)行取值,所以列表就有插入到某一個(gè)位置這種功能。
但是對(duì)于字典來(lái)說(shuō),字典是無(wú)序的,字典里不存在把一個(gè)值插入到某一個(gè)位置這種說(shuō)法,在我們操作字典的時(shí)候,看著字典好像有序。
定義的字典元素和打印出來(lái)的字典元素它們的順序都是一樣的,這其實(shí)是元素添加到字典的先后順序,它并不會(huì)像列表一樣把這個(gè)順序做為我們?nèi)≈档囊罁?jù)。
還需要注意的是字典的每一個(gè)key都是唯一的,拿上面的代碼舉例。
dic = {'a': 1, 'b': 2,'b':3}
print(dic)
結(jié)果你就會(huì)發(fā)現(xiàn),只會(huì)打印一個(gè)b,而且后面的value是最后一個(gè)3,而不是2。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 字典類型2