1. 程式人生 > >Python之字典(常見知識點)

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