如何在 Python 中訪問嵌套字典

2024年2月6日 17点热度 0人点赞

字典是另一種可變容器模型,且可存儲任意類型對象。字典包含多個鍵值對“key:value”,每個鍵值對之間用逗號分割,整個字典包括在花括號 {} 中。

嵌套字典允許你以分層的方式存儲和訪問數據。嵌套字典是一個包含其他字典作為值的字典。這些內層字典中的每一個值也可以包含其他的字典,形成一個層次結構。當你需要以樹狀結構存儲數據時,可以使用嵌套字典,常用於網絡開發中處理 JSON 數據。

比如一個包含學生信息的嵌套字典,其中學生 ID 是一個鍵,學生基本信息以字典形式,作為 ID 的一個值。

students = {
    001: {'name' : 'liming', 'age': '16'},
    002: {'name' : 'wangqiang', 'age': '15'}
}

使用 [] 訪問字典元素

可以使用[]通過字典的鍵(ID)訪問學生的基本信息。若要訪問基本信息中的特定值,可以使用[]再次調用下一層字典的鍵。

students = {
    1: {'name' : 'liming', 'age': '16'},
    2: {'name' : 'wangqiang', 'age': '15'}
}
print(students[1])
print(students[1]['name'])
# 輸出:
{'name': 'liming', 'age': '16'}
liming

使用 for 循環遍歷字典

使用 for 循環遍歷字典以獲取嵌套字典的所有學生信息。

students = {
    1: {'name' : 'liming', 'age': '16'},
    2: {'name' : 'wangqiang', 'age': '15'}
}
for i in students:
    print(students[i])
# 輸出:
{'name': 'liming', 'age': '16'}
{'name': 'wangqiang', 'age': '15'}
students = {
    1: {'name' : 'liming', 'age': '16'},
    2: {'name' : 'wangqiang', 'age': '15'}
}
for id, info in students.items():
    print("\nID:", id)
    for key in info:
        print(key   ':', info[key])
# 輸出:
ID: 1
name: liming
age: 16
ID: 2
name: wangqiang
age: 15

分別從嵌套字典中獲取鍵和值

使用 keys() 和 values() 方法,分別從嵌套字典中獲取鍵和值。

students = {
    1: {'name' : 'liming', 'age': '16'},
    2: {'name' : 'wangqiang', 'age': '15'}
}
for i in students:
    print(students[i].keys())
for i in students:
    print(students[i].values())
# 輸出:
dict_keys(['name', 'age'])
dict_keys(['name', 'age'])
dict_values(['liming', '16'])
dict_values(['wangqiang', '15'])

安全的訪問字典

如果引用不在的鍵,則會引發異常。為了避免這種異常,可以使用字典的 get() 方法。如果鍵在字典中,則此方法返回鍵的值,否則返回 None,避免了出現 KeyError。

students = {
    1: {'name' : 'liming', 'age': '16'},
    2: {'name' : 'wangqiang', 'age': '15'}
}
print(students[1].get('ID'))
print(students[1].get('name'))
# 輸出:
None
liming

修改嵌套字典

students = {
    1: {'name' : 'liming', 'age': '16'},
    2: {'name' : 'wangqiang', 'age': '15'}
}
# 修改學生信息
students[2]['name'] = 'zhaolei'
students[2]['age'] = '17'
# 增加學生信息
students[3] = {'name': 'zhouming', 'age': '16'}
# 刪除學生信息
# 如果需要保留刪除的數據,使用 pop(),否則使用 del
x = students.pop(1)
del students[3]['age']
print(students)
# 輸出:
{2: {'name': 'zhaolei', 'age': '17'}, 3: {'name': 'zhouming'}}

文章創作不易,如果您喜歡這篇文章,請關註、點贊並分享給朋友。如有意見和建議,請在評論中反饋!