python3:字典(當索引不好用時)
阿新 • • 發佈:2019-02-14
一般情況下,我們都可以用列表來存放資料。但是,某些時候,字典比列表更加實用:
(1)表示一個遊戲棋盤的狀態,每個鍵都是由座標值組成的元組。
(2)儲存檔案修改時間,用檔名作為鍵。
(3)數字電話簿等。
對映可以使用任意不可變物件標識元素。最常用的型別是字串和元組。而字典是python中唯一內建的對映函式。字典中的值沒有特定的順序,但都存放在特定的Key下。且每個鍵值對內部都用冒號進行分割,對之間用逗號隔開。整個字典用{}花括號括起來。
字典中的每個鍵都是唯一的,但是其值不需要。值可以是任何資料型別,但是鍵必須是不可變的。
建立字典
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} >>> dict {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
訪問字典中的值
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict['Alice']
'2341'
其他基本的字典操作
- d[k]返回關聯到鍵k上的值;
- d[k]=v,將v關聯到鍵k上。更新。
- len(d) 返回d中鍵值對的數量。
- del d[k] 刪除鍵為k的項。
- k in d 檢查d中是否含有鍵為k的項。
- clear 清空字典。
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} >>> dict['Alice'] #返回關聯到Alice上的值 '2341' >>> dict['Alice']='1111'#更新鍵Alice >>> dict #檢視字典 {'Alice': '1111', 'Beth': '9102', 'Cecil': '3258'} >>> len(dict) #返回dict中鍵值對的數量 3 >>> del dict['Beth'] #刪除字典dict中鍵為Beth的鍵值對 >>> dict {'Alice': '1111', 'Cecil': '3258'} >>> 'Cecil' in dict #檢查dict中是否有鍵為Cecil的項 True
字典鍵的特性
字典值可以是任何的 python 物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住,如下例項:
>>> dict={'name':'Alice','name':'Bob'}
>>> dict['name']
'Bob'
2)鍵必須不可變,所以可以用數字,字串或元組充當,而用列表就不行,如下例項:
>>> dict = {['Name']: 'Runoob', 'Age': 7} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
注意:字串和元組是不可變的,而列表是可以更改的!
利用字典格式化字串
前面已經學過如何使用字串格式化元組中所有的值。如果使用的是字典(只以字串作為鍵的)而不是元組,會使字串格式化更加酷一些。在每個轉換說明符(conversion specifier)中的%字元後面,可以加上鍵(用圓括號括起來),後面再跟上其他說明元素。如下:
>>> phonebook={'Beth':'9029','Alice':'2182','Bob':'1292'}
>>> "Bob's phone number is %(Bob)s."%phonebook
"Bob's phone number is 1292."
除了增加增加的字串鍵外,轉換說明符還是像以前一樣工作。當以這種方式使用字典時,只要所給出的鍵能在字典中找到,就可以使用任意數量的轉換說明符。這類字串格式化在模板系統中非常有用!