1. 程式人生 > >python3:字典(當索引不好用時)

python3:字典(當索引不好用時)

一般情況下,我們都可以用列表來存放資料。但是,某些時候,字典比列表更加實用:

(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."

除了增加增加的字串鍵外,轉換說明符還是像以前一樣工作。當以這種方式使用字典時,只要所給出的鍵能在字典中找到,就可以使用任意數量的轉換說明符。這類字串格式化在模板系統中非常有用!

Python字典包含了以下內建方法: