1. 程式人生 > >Python——資料型別之dict

Python——資料型別之dict

字典,相當於一個列表,不過列表的索引是數字,字典的索引是數字或者字串。

1、字典的訪問

字典是典型的key-value結構,一個key對應著一個value,key就是索引,value就是要儲存的值

score={'Albert':99, 'QQ':88}
print(score['Albert'])#根據key訪問value

score['XP']=77#新建一個key-value對
print(score)

print('#遍歷value')
for i in score:#遍歷value
        print(i)
        
print('#遍歷key和value
') for key,value in score.items(): print(key,value)

輸出

99
{'Albert': 99, 'QQ': 88, 'XP': 77}
#遍歷value
Albert
QQ
XP
#遍歷key和value
Albert 99
QQ 88
XP 77

這樣就很方便的解決了索引不是數字的情況了。

字典的底層其實是散列表,或者叫hash表。

2、字典的方法

(1)clear(self):清除所有內容,將字典變為None。

(2)copy(self):複製一個字典。(這裡注意,不要直接a=b,就像C裡面陣列的複製那樣,a=b只是把b的地址賦給a了,修改a的時候就是修改b。用copy函式就可以把a和b分開。)

b={'Albert':99, 'QQ':88}
a=b.copy()
a['Albert']=0
print(b)

b={'Albert':99, 'QQ':88}
a=b
a['Albert']=0
print(b)

輸出

{'Albert': 99, 'QQ': 88}
{'Albert': 0, 'QQ': 88}

這就可以看出來copy與直接賦值的區別了。

 (3)fromkeys(*args, **kwargs):根據key創造一個字典

name=['Albert', 'QQ']
score=10

a=dict.fromkeys(name,score)
print(a) b=dict.fromkeys(name) print(b)

 

 輸出

{'Albert': 10, 'QQ': 10}
{'Albert': None, 'QQ': None}

 (4)get(self, k, d=None):如果k(key)在字典中,則返回value。如果不在字典中,就返回d(default)預設返回None

a={'Albert':99, 'QQ':88}
print(a.get('QQ'))
print(a.get('XP'))
print(a.get('XP',100))

 

輸出

88
None
100

 

(5)items(self):返回一個包含key和value的集合,通常用來字典裡的key和value

a={'Albert':99, 'QQ':88}
for key,value in a.items():
        print(key,value)

 

輸出

Albert 99
QQ 88

 

(6)keys(self)返回一個只包含key的集合,通常用來字典裡的key

a={'Albert':99, 'QQ':88}
for key in a.keys():
        print(key)

 

 輸出

Albert
QQ

 

(7)pop(self, k, d=None):刪除某個k(key),返回相應的value,如果k找不到,就返回d,d預設為None,會丟擲KeyError

a={'Albert':99, 'QQ':88}
print(a.pop('QQ'))
print(a)
print(a.pop('XP','No'))
a.pop('XP')#沒有指定d

輸出

88
{'Albert': 99}
No
Traceback (most recent call last):
  File "C:/Users/admin/PycharmProjects/temp.py", line 15, in <module>
    a.pop('XP')
KeyError: 'XP'

 (8)popitem(self):也是刪除一對Key-Value。但是他會把這一對Key-value當做元組返回。(字典為空也會報錯)

(9)setdefault(self, k, d=None):相當於get()方法獲取key的value。但是如果key不存在,他會新建一個,並設value為d,並返回d

a={'Albert':99, 'QQ':88}
print(a.setdefault('QQ'))
print(a)
print(a.setdefault('XP',77))
print(a)

 

輸出

88
{'Albert': 99, 'QQ': 88}
77
{'Albert': 99, 'QQ': 88, 'XP': 77}

 

(10)update(self, E=None, **F)用字典EF更新字典

If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
a={'Albert':99, 'QQ':88}
E={'Albert':11, 'QQ':22}
F=[33,44]
print(a)
a.update(E)
print(a)

 

輸出

{'Albert': 99, 'QQ': 88}
{'Albert': 11, 'QQ': 22}

 

(11)values(self):主要用來遍歷values
a={'Albert':99, 'QQ':88}
print(a.values())
for v in a.values():
    print(v)

 

輸出

dict_values([99, 88])
99
88

 

 

       常用的這幾個物件的所有方法的用法算是看完了,但是我不能保證我都記住了,有個印象就好。用的時候想到有這個方法,再過來檢視一下就行,用多了就記住了。