Python之字典(常見知識點)
1、字典,好名字啊,讓你忘不了的名字,如同java中的Map,HashMap
2、字典,別稱:雜湊表、關聯陣列。英文名:我就不寫
3、【增】字典的建立,沒錯就是使用 {},例子中是空的字典,即沒有元素
>>> tempA = {}
4、字典的元素,都是成對的,即key-value,組成為一對
5、字典可以儲存任意型別的value,如字串、數字、元組、List
6、字典的優點,同雜湊表:查詢快、儲存快(衝突少的情況下)、刪除快
7、【增】有多個元素的字典語法,key與value用冒號隔開,每個元素(key-value)之間用逗號隔開
>>> tempB = {5:"hello", "two":999, 100:23}
>>> tempB
{100: 23, 5: 'hello', 'two': 999}
你看我例子中,key的型別分別使用了整型、字串
value的型別分別有整型、字串
8、字典的巢狀,key用字典可以嗎?答案是不可以
>>> tempA = {} >>> tempB = {5:"hello", "two":999, 100:23} >>> tempB {100: 23, 5: 'hello', 'two': 999} >>> tempSuper = {tempB:"Hello", tempA:"World"} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'dict'
解答:一個物件能不能作為字典的key,就取決於其有沒有__hash__方法。所以所有python自帶型別中,除了list、dict、set和內部至少帶有上述三種類型之一的tuple之外,其餘的物件都能當key
9、key必須是獨一無二的,即字典中的key不可以有重複的,如果重複了,會把原來的key-value中的value覆蓋掉
10、value可以是重複的,而且可以是任意型別的物件,上面已經說過了,這裡就是想再說一次,比如value是List、元組、字典,都沒有問題
>>> tempA = {} >>> tempB = {5:"hello", "two":999, 100:23} >>> tempSuper = {"first":tempA,"second":tempB} >>> tempSuper {'second': {100: 23, 5: 'hello', 'two': 999}, 'first': {}}
11、【查】如何訪問字典中的value啊,語法自然是 字典[key],如果key不存在,肯定是要報錯的
>>> tempSuper["second"]
{100: 23, 5: 'hello', 'two': 999}
12、【查】返回字典中所有的key,作為一個List返回
#python就厲害在,如果你不加print,人家也會給你打印出來,牛x
>>> print(tempSuper.keys())
['second', 'first']
>>> tempSuper.keys()
['second', 'first']
13、【查】使用字典中的函式get(傳入key), 字典.get(key),如果key不存在,返回None
>>> tempSuper.get("first")
14、【查】還有一個過載的使用字典中的函式get(傳入key,傳入找不到key的容錯方案),比如
>>> tempSuper.get("third","not found")
'not found'
15、【查】判斷key是否在一個字典中
>>> "first" in tempSuper
True
16、【查】剛才我還想說,字典怎麼遍歷呢,怎麼報錯了?後面看答案
>>> tempSuper
{'second': {100: 23, 5: 'hello', 'two': 999}, 'first': {}}
>>> for k,v in tempSuper:
... print k,v
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
17、【查】返回字典中所有的value,作為一個List返回,別懵逼,我兩個value:一個是兩個元素(Entry)的字典、一個是空字典
>>> tempSuper.values()
[{100: 23, 5: 'hello', 'two': 999}, {}]
18、【查】這次遍歷陣列靠譜,呼叫了字典的items()方法,艹
>>> tempSuper
{'second': {100: 23, 5: 'hello', 'two': 999}, 'first': {}}
>>> for k,v in tempSuper.items():
... print k,v
...
second {100: 23, 5: 'hello', 'two': 999}
first {}
19、遍歷字典中的key
>>> for k in tempSuper:
... print(k)
...
second
first
20、修改字典,如果key存在,就修改,如果key不存在,就是新增
>>> tempSuper
{'second': {100: 23, 5: 'hello', 'two': 999}, 'first': {}}
>>> tempSuper['second'] = 'baby'
>>> tempSuper['third'] = 'the three'
>>> tempSuper
{'second': 'baby', 'third': 'the three', 'first': {}}
21、字典是無序的,所以你插入元素的位置都是隨機的
22、刪除字典元素
>>> tempSuper
{'second': 'baby', 'third': 'the three', 'first': {}}
>>> tempSuper.pop("second")
'baby'
>>> tempSuper
{'third': 'the three', 'first': {}}
23、隨時刪除字典中的一個元素,popitem()
>>> tempSuper.popitem()
('third', 'the three')
>>> tempSuper
{'first': {}}
24、使用del語句嘛
>>> del tempSuper['first']
>>> tempSuper
{}
25、 清空字典,直接把字典中所有元素都幹掉了
>>> tempSuper.clear()
26、其他字典常見操作(純轉載)
dict.items() 輸出一個list格式(非真正意義上的list)
list(dict.items()) 把字典的key 和 value 轉成一個多維list
len(dict):計算字典元素個數,即鍵的總數。
str(dict):輸出字典可列印的字串。
type(variable):返回輸入的變數型別,如果變數是字典就返回字典型別
27、利用not in判斷key是否不在字典中
key not in dict