天天看點

資料類型-字典dict

Dict字典

字典是無序、可修改可變、成對(key:value)的資料類型集合。

建立字典

要建立一個dict類型,我們通過大括号{}或 内置函數方法 dict() 實作。

# 文法形式:空值
empty_dict = {}

# 文法形式:帶初始值(鍵值對)
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}           

實踐例子

person = {
    'name':'MegaQi',
    'age':100,
    'country':'China',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'Java', 'Python'],
    'address':{
        'city':'上海', 
        'street':'萬航渡路'
    }
}           

上面的例子中對應的值可以是任何資料類型,如:字元串、布爾值、清單、元組、集合或字典。

字典長度

使用len(dict)可以獲得字典的長度,它計算的是一對 'key: value' 的數量。

# syntax
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(len(dct)) # 4           

具體例子

person = {
    'name':'MegaQi',
    'age':100,
    'country':'China',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'Java', 'Python'],
    'address':{
        'city':'上海', 
        'street':'萬航渡路'
    }
}
print(len(person)) # 6           

字典通路

我們通過引用key的的方式擷取dict鍵值對的值。形式為字典變量[key]

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct['key1']) # value1
print(dct['key4']) # value4           

詳細例子

person = {
    'name':'MegaQi',
    'age':100,
    'country':'China',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'Java', 'Python'],
    'address':{
        'city':'上海', 
        'street':'萬航渡路'
    }
}
print(person['name'])       # MegaQi
print(person['country'])    # China
print(person['skills'])     # ['JavaScript', 'React', 'Node', 'Java', 'Python']
print(person['skills'][0])  # JavaScript
print(person['address']['street']) # 萬航渡路
print(person['school'])       # KeyError: school           

如果通路key不存在則會引發錯誤。為了避免這種錯誤,首先必須檢查鍵是否存在,或者可以使用get方法。如果鍵不存在,get方法會傳回None,表示是一個NoneType對象資料類型。

# 将上邊的例子改成用get擷取值
person = {
    #...略...
}
print(person.get('name')) 
print(person.get('country')) 
print(person.get('skills'))
print(person.get('city'))   # None           

字典增改

增加dict項

通過引用指派,可以向已存在的字典中增加新的key-value項。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key5'] = 'value5'           

修改dict項值

#  文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key1'] = 'value-one'           

檢查、複制與轉換

字典檢查

要檢查一個字典對是否存在,通過操作符in判斷key是否在dict中包含。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print('key2' in dct) # True
print('key5' in dct) # False

# 例子
person = {
    # ...同上...
}
print('city' in person)  # True
print('school' in person) # Flase           

字典拷貝

使用copy()方法複制字典。使用複制可以避免原字典的項在操作中變動。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct_copy = dct.copy() # {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}

# 例子
person = {
    # ...同上...
}
copy_person = person.copy()
copy_person['city'] = '深圳'
print(person)
print(copy_person)           

字典轉清單

方法items()将dictionary轉換為元組清單。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.items()) # dict_items([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), ('key4', 'value4')])           

移删清空

字典項移除

移除字典中的項,可以通過以下三個方法:

  • pop(key) :移除具有指定鍵名的項,并傳回移除項值
  • popitem():删除最後一項,并傳回項值
  • del:移除項通過關鍵名字
# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct.pop('key1') # 移除key1項
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct.popitem() # 移除最後一項
del dct['key2'] # 移除第二項           

清空字典項

如果不需要字典中的項,可以使用clear()方法清除它們。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.clear()) # None

# 實際例子
person = {
    # ...同上...
}
person.clear()
print(person) # {}           

删除整個字典

如果我們不使用字典,我們可以完全删除它。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
del dct

# 實際例子
person = {
    # ...同上...
}
del person
print(person) # NameError: name 'person' is not defined           

擷取鍵或值清單

方法keys()可以擷取字典中的所有鍵list。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
keys = dct.keys()
print(keys)     # dict_keys(['key1', 'key2', 'key3', 'key4'])           

方法values()可以擷取字典中的所有值list。

# 文法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
values = dct.values()
print(values)     # dict_values(['value1', 'value2', 'value3', 'value4'])           

繼續閱讀