1. 程式人生 > 實用技巧 >五、Python基本資料型別五:字典型別

五、Python基本資料型別五:字典型別

·字典就是一系列的標籤和繫結在標籤上的資料值對的集合

·字典容器中儲存著一系列的key-value

·字典中通過 key 來訪問 value

·鍵必須是唯一的,但值則不必。

·值可以取任何資料型別,但鍵必須是不可變的

1、字典的建立

·使用花括號{}

dict_a = {'a':1, 'b':2, 12:'abc', (10, 20):[1, 2, 3]}
dict_a
#{'b': 2, 12: 'abc', (10, 20): [1, 2, 3], 'a': 1}

·使用dict()方法,可以傳入多個列表或元組引數作為

key-value對,每個列表或元組將被當成一個 key-value對,因此這些列表或元組都只能包含兩個元素。

dict_a = [('celery', 1.58), ('brocoli', 1.29), ('lettuce', 2.19)]
dict_b = [['BMW', 8.5], ['BENS', 8.3], ['AUDI', 7.9]]
dict_1 = dict(dict_a)
dict_2 = dict(dict_b)
print(dict_1, '\n', dict_2)
#{'lettuce': 2.19, 'celery': 1.58, 'brocoli': 1.29} 
#{'AUDI': 7.9, 'BENS': 8.3, 'BMW': 8.5}
dict_a = dict(hello = 'world', abc = [1, 3], acd = (10,))
dict_a
#{'acd': (10,), 'hello': 'world', 'abc': [1, 3]}

2、字典的基本用法

(1)訪問字典元素

·通過key訪問value

dict_a = {'語文':89, '數學':98, '英語':98}
dict_a['語文']
#89

(2)修改字典元素

dict_a = {'語文':89, '數學':98, '英語':98}
dict_a[
'語文'] = 92 dict_a #{'英語': 98, '語文': 92, '數學': 98}

(3)增加字典元素

·為不存在的key賦值即可增加字典元素,為存在的key賦值即可修改字典元素

dict_a = {'語文':89, '數學':98, '英語':98}
dict_a
#{'英語': 98, '語文': 89, '數學': 98}
dict_a['物理'] = 100
dict_a
#{'英語': 98, '物理': 100, '語文': 89, '數學': 98}

(4)刪除字典元素

·使用del語句

dict_a = {'語文':89, '數學':98, '英語':98}
del dict_a['語文']           # 刪除鍵是'語文'的條目
dict_a
#{'英語': 98, '數學': 98}
dict_a = {'語文':89, '數學':98, '英語':98}
dict_a.clear()            # 清空詞典所有條目
dict_a
#{}
dict_a = {'語文':89, '數學':98, '英語':98}
del dict_a       # 刪除詞典
dict_a
'''
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    dict_a
NameError: name 'dict_a' is not defined
'''

(5)判斷指定元素是否存在

·使用innot in關鍵字判斷是否存在指定的key

dict_a = {'語文':89, '數學':98, '英語':98}
'語文' in dict_a
#True
'物理' in dict_a
#False

3、使用字典格式化字串

·在格式化字串時,可以在字串模板中按 key 指定變數,然後通過字典為字串模板中的 key 設定值

# 字串模板中使用key
temp = '教程是:%(name)s, 價格是:%(price)010.2f, 出版社是:%(publish)s'
book = {'name':'Python基礎教程', 'price': 99, 'publish': 'C語言中文網'}
# 使用字典為字串模板中的key傳入值
print(temp % book)
#教程是:Python基礎教程, 價格是:0000099.00, 出版社是:C語言中文網
book = {'name':'C語言小白變怪獸', 'price':159, 'publish': 'C語言中文網'}
# 使用字典為字串模板中的key傳入值
print(temp % book)
#教程是:C語言小白變怪獸, 價格是:0000159.00, 出版社是:C語言中文網

4、字典的常用方法

(1)update()方法:更新己有的字典

dict_a = {'語文':89, '數學':98, '英語':98}
dict_a.update({'語文':92, '物理':100})
dict_a
#{'英語': 98, '物理': 100, '語文': 92, '數學': 98}

(2)items()、keys()、values()方法:分別用於獲取字典中的所有 key-value 鍵值對、所有 key、所有 value,可通過 list() 函式把它們轉換成列表

dict_a = {'語文':89, '數學':98, '英語':98}
dict_a.items()
#dict_items([('英語', 98), ('語文', 89), ('數學', 98)])
dict_a = {'語文':89, '數學':98, '英語':98}
dict_a.keys()
#dict_keys(['英語', '語文', '數學'])
dict_a = {'語文':89, '數學':98, '英語':98}
dict_a.values()
#dict_values([98, 89, 98])
dict_a = {'語文':89, '數學':98, '英語':98}
list_a = list(dict_a.values())
list_a
#[98, 89, 98]
list_a[1]
#89
list_b = list(dict_a.items())
list_b
#[('英語', 98), ('語文', 89), ('數學', 98)]
list_b[1]
#('語文', 89)

(3)setdefault()方法:返回指定 key 對應的 value;如果該 key-value 對存在,則直接返回該 key 對應的 value;如果該 key-value 對不存在,則先為該 key 設定預設的 value,然後再返回該 key 對應的 value

dict_a = {'語文':89, '數學':98, '英語':98}
# 設定預設值,該key在dict中不存在,新增key-value對
print(dict_a.setdefault('物理', 100))    #100
dict_a  #{'英語': 98, '物理': 100, '語文': 89, '數學': 98}
# 設定預設值,該key在dict中存在,不會修改dict內容
print(dict_a.setdefault('語文', 100))    #89
dict_a  #{'英語': 98, '物理': 100, '語文': 89, '數學': 98}

(4)fromkeys()方法:使用給定的多個 key 建立字典,這些 key 對應的 value 預設都是 None;也可以額外傳入一個引數作為預設的 value

# 使用列表建立包含2個key的字典
a_dict = dict.fromkeys(['a', 'b'])
print(a_dict) # {'a': None, 'b': None}
# 使用元組建立包含2個key的字典
b_dict = dict.fromkeys((13, 17))
print(b_dict) # {13: None, 17: None}
# 使用元組建立包含2個key的字典,指定預設的value
c_dict = dict.fromkeys((13, 17), 'good')
print(c_dict) # {13: 'good', 17: 'good'}

(5)常用方法小結

序號

函式及描述

例項

1

len(dict)
計算字典元素個數,即鍵的總數。

2

str(dict)
輸出字典,以可列印的字串表示。

3

type(variable)
返回輸入的變數型別,如果變數是字典就返回字典型別。

4

radiansdict.clear()
刪除字典內所有元素

5

radiansdict.copy()
返回一個字典的淺複製

6

radiansdict.fromkeys()
建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值

7

radiansdict.get(key, default=None)
返回指定鍵的值,如果鍵不在字典中返回 default 設定的預設值

8

key in dict
如果鍵在字典dict裡返回true,否則返回false

9

radiansdict.items()
以列表返回可遍歷的(鍵, 值) 元組陣列

10

radiansdict.keys()
返回一個迭代器,可以使用 list() 來轉換為列表

11

radiansdict.setdefault(key, default=None)
和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default

12

radiansdict.update(dict2)
把字典dict2的鍵/值對更新到dict裡

13

radiansdict.values()
返回一個迭代器,可以使用 list() 來轉換為列表

14

pop(key[,default])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。

15

popitem()
隨機返回並刪除字典中的最後一對鍵和值。