第十章、Python資料型別(字典dict)
阿新 • • 發佈:2021-11-10
字典(dict)
Python中字典由花括號{} 加鍵值對組成,每個鍵值對(key:value) 用冒號: 隔開,每個對之間用逗號(,)分割,格式如下所示:
dict = {key1 : value1, key2 : value2, key3 : value3 }
鍵是唯一的不能重複,所以可以用數字,字串或元組充當,而用列表就不行。值不唯一。
1)字典建立
>>> a={} #建立空字典
>>> a["key1"]=12 #給字典中新增鍵值對
>>> a
{'key1': 12}
>>> b=dict(key1=32,key2=43) #利用dict()函式建立字典
>>> b
{'key2': 43, 'key1': 32}
>>> c=(['q','w'],[1,2])
>>> c=dict(c) #dict()函式加元組構成字典
>>> c
{'q': 'w', 1: 2}
以上方法得到的還是原來的字典,即在字典上操作
Python 字典 fromkeys() 函式,建立一個新字典
語法: dict.fromkeys(seq, value)
以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應的初始值。
引數
seq -- 字典鍵值列表。
value -- 可選引數, 設定鍵序列(seq)的值。
返回值
該方法返回一個新字典。
>>> d= {}.fromkeys(("q","w"),(1,2)) #
>>> c
{'q': 'w', 1: 2}
>>> d
{'q': (1, 2), 'w': (1, 2)}
2)基本操作:
- len(d),返回字典(d)中的鍵值對的數量
- d[key],返回字典(d)中的鍵(key)的值,若鍵不存在,則報錯
- d.get(key),得到鍵key的值,若鍵不存在,則返回None
- d[key]=value,將值(value)賦給字典(d)中的鍵(key)
- del d[key],刪除字典(d)的鍵(key)項(將該鍵值對刪除)
- d.clear() 函式,清空字典
- key in d,檢查字典(d)中是否含有鍵為key的項
- str(d),輸出字典,以可列印的字串表示。
>>> a={1:12,2:13,3:14}
>>> a.[4]
File "<stdin>", line 1
a.[4]
^
SyntaxError: invalid syntax #dict[key]與dict.get(key)的區別
>>> a.get(4)
>>>
>>> print(a.get(4))
None
copy()函式,複製新的變數 dict.copy()
>>> q=d.copy() #copy後在新變數上操作不影響原來的變數
>>> q
{'q': (1, 2), 'w': (1, 2)}
>>> id(d)
139753898228264
>>> id(q)
139753942536832
>>> w=d #在原來變數上操作
>>> id(w)
139753898228264
3)setdefault() 函式和 get()類似, 得到鍵的值,如果鍵不存在於,則新增鍵並將值設為預設值None。
語法:dict.setdefault(key, default=None)
>>> a
{1: 12, 2: 13, 3: 14}
>>> a.setdefault(4)
>>> a
{1: 12, 2: 13, 3: 14, 4: None}
>>> a.setdefault(5,16)
16
>>> a
{1: 12, 2: 13, 3: 14, 4: None, 5: 16}
4)items()和iteritems()函式
items()函式,將字典以列表形式返回,列表中的元素是由字典中的鍵和值組成的元組
>>> b={1: 12, 2: 13, 3: 14, 4: None, 5: 16}
>>> b.items()
[(1, 12), (2, 13), (3, 14), (4, None), (5, 16)]
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.items()
[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]
iteritems()函式,將字典返回成迭代器,是一個'dictionary-itemiterator'型別,不過這種迭代器型別的資料不能直接輸出,必須用list()
轉換一下,才能看到裡面的真面目。
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.items()
[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]
>>> c=b.iteritems()
>>> c
<dictionary-itemiterator object at 0x7f743743efc8>
>>> list(c)
[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]
5)keys()和values()函式
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.keys() #提取字典中的鍵
[1, 3, 4, 5, 7]
>>> b.values() #提取字典的值
[12, 14, None, 16, 13]
6)pop()和popitem()函式
pop(key[,default])函式 ,刪除字典給定鍵 key 及對應的值,返回值為被刪除的值,key必須寫
key: 要刪除的鍵值
default: 如果沒有對應key值,返回default值,[]內為可選
popitem() 函式,隨機刪除字典中一對鍵和值。並返回該鍵值對。若字典為空,就報出 KeyError 異常。
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.popitem()
(1, 12)
>>> b.pop(7)
13
7)has_key()函式,判斷字典中是否存在某個鍵,等同於 "key in dict"
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.has_key(1)
True
>>> 1 in b
True