目錄:
一 、字典(雜湊、關係陣列)
二、建立和訪問字典
三、課時25課後習題及答案
*********************************
一 、字典(雜湊、關係陣列)
*********************************
在Python中也有字典,又稱為雜湊(hash),有些地方稱為關係陣列。
字典是Python中唯一的對映型別,對映是數學上的一個術語,指的是兩個元素集合之間元素相互“對應”關係,如下圖所示:
對映型別區別於序列型別,序列型別一陣列的形式儲存,通過索引的方式來獲取相應位置的值,一般索引值與對應位置儲存的資料是毫無關係的。舉個例子:
>>> brand = ["李寧","耐克","阿迪達斯","魚C工作室"] >>> slogan = ["一切皆有可能","Just do it","Impossible is nothing","讓程式設計改變世界"] >>> print("魚C工作號的口號是:",slogan[brand.index("魚C工作室")]) 魚C工作號的口號是: 讓程式設計改變世界
列表brand和slogan的索引和相對的值是沒有任何關係的,可以看出,唯一有關係的就是兩個列表之間,索引號相同的元素是有關係的(品牌對應口號嘛),所以這裡通過“brand.index("魚C工作室")”這樣的語句,間接地實現通過品牌查詢對應口號的功能。這種方式有點差強人意,所以,需要有字典這種對映型別的出現。
***********************
二、建立和訪問字典
***********************
先演示下用法:
>>> dict1 = {"李寧":"一切皆有可能","耐克":"Just do it","阿迪達斯":"Impossible is nothing","魚C工作室":"讓程式設計改變世界"} >>> dict1 {'李寧': '一切皆有可能', '耐克': 'Just do it', '阿迪達斯': 'Impossible is nothing', '魚C工作室': '讓程式設計改變世界'} >>> print("魚C工作號的口號是:",dict1['魚C工作室']) 魚C工作號的口號是: 讓程式設計改變世界
字典的使用非常簡單,它有自己的標誌性符號,就是用大括號( { } )定義。字典由多個鍵及其對應的值共同構成,每一對鍵值組合稱為項。在剛才的例子中,“李寧”“耐克”“阿迪達斯“”魚C工作室”這些品牌就是鍵,而"一切皆有可能","Just do it","Impossible is nothing","讓程式設計改變世界"這些口號就是對應的值。也許細心的你發現了:字典中的項跟建立的順序不一樣的?沒錯,字典跟序列不同,序列講究順序,字典講究對映,不講順序。
另外,需要注意的是:字典的鍵必須是獨一無二的,而值可以取任何資料型別,但必須是不可變的(如字串、數或元組)。
要申明一個空字典,直接用大括號即可:
>>> empty = {} >>> empty {} >>> type(empty) <class 'dict'>
你也可以用dict()來建立字典:
>>> dict1 = dict((('F',70),('i',105),('s',115),('h',104),('c',67))) >>> dict1 {'F': 70, 'i': 105, 's': 115, 'h': 104, 'c': 67}
為什麼會有這麼多的括號呢?
因為dict()函式的引數可以是一個序列(但不能是多個),所以要打包成一個元組序列(列表也可以)。當然,如果嫌上面的做法太麻煩,還可以通過提供具有對映關係的引數來建立字典:
>>> dict1 = dict(F=70,i=105,s=115,h=104,c=67) >>> dict1 {'F': 70, 'i': 105, 's': 115, 'h': 104, 'c': 67}
這裡要注意的是鍵的位置不能加上字串的引號,否則會報錯:
>>> dict1 = dict('F'=70,'i'=105,'s'=115,'h'=104,'c'=67) SyntaxError: keyword can't be an expression
還有一種建立的方法是直接給字典賦值,如果鍵存在,則改寫鍵對應的值;如果不存在,則建立一個新的鍵並賦值:
>>> dict1 {'F': 70, 'i': 105, 's': 115, 'h': 104, 'c': 67} >>> dict1['x'] = 88 >>> dict1 {'F': 70, 'i': 105, 's': 115, 'h': 104, 'c': 67, 'x': 88} >>> dict1['x'] = 120 >>> dict1 {'F': 70, 'i': 105, 's': 115, 'h': 104, 'c': 67, 'x': 120}
正所謂殊途同歸,下面列舉的五種方法都是建立同樣的字典,我們好好的體會下:
>>> a = dict(one = 1,two = 2,three = 3) >>> b = {'one':1,'two':2,'three':3} >>> c = dict(zip(['one','two','three'],[1,2,3])) >>> d = dict([('two',2),('one',1),('three',3)]) >>> e = dict({'three':3,'one':1,'two':2}) >>> a == b == c == d == e True >>> a {'one': 1, 'two': 2, 'three': 3} >>> b {'one': 1, 'two': 2, 'three': 3} >>> c {'one': 1, 'two': 2, 'three': 3} >>> d {'two': 2, 'one': 1, 'three': 3} >>> e {'three': 3, 'one': 1, 'two': 2}
*******************************
三、課時25課後習題及答案
*******************************