2018-07-23 python學(xué)習(xí)——字典

字典也是一種容器類型的數(shù)據(jù)類型(序列),存的數(shù)據(jù)是以鍵值對的形式出現(xiàn)的,字典中的元素全部都是鍵值對

字典是可變的(可是增刪改),但是是無序的(不能使用下標(biāo))

*鍵是唯一的

鍵值對: 鍵:值(key:value); 鍵值對中key是形式,值才是真正要存的內(nèi)容

鍵:理論上可以是任何不可變的數(shù)據(jù)類型,但是實際開發(fā)的時候一般使用字符串作為key
值:可以是任意數(shù)據(jù)類型數(shù)據(jù)

1.聲明一個字典

"""a.創(chuàng)建一個字典變量"""
dict1 = {}  # 創(chuàng)建一個空的字典
print(type(dict1))

dict2 = {'a': 1, 'b': 'abc', 10: [1, 2, 3], ('a', 'b'): 'abc'}
print(dict2)

dict2 = {'a': 1, 'b': 'abc', 'a': 100}
print(dict2)

"""b.將其他數(shù)據(jù)類型轉(zhuǎn)換成字典"""
dict3 = dict([(1, 2), (2, 3)])  # 了解
print(dict3)

2.字典的增刪改查

"""a.查:獲取字典的元素的值
字典獲取元素的值是通過key來獲取的
字典[key]
"""
person = {'name': '路飛', 'age': 17, 'face': 90}
print(person['name'], person['face'])
# print(person['aaa'])  # 如果key不存在,會報KeyError

"""
字典.get(key)
"""
print(person.get('name'))
print(person.get('aaa'))  # 如果key不存在,返回None

"""
注意:如果key值確定存在,使用[]語法去獲取值。不確定key值是否存在才使用get方法去獲取值
"""

"""b.增加元素\修改元素
通過key獲取字典元素,然后賦值。當(dāng)key本身就存在的時候,就
是修改元素的值;不存在的時候就是給字典添加鍵值對
"""
person['height'] = 1.8
print(person)

person['age'] = 18
print(person)

"""c.刪除: 刪除的是鍵值對
del 字典[key]   ---- 注意:key如果不存在會報錯
"""
del person['face']
print(person)

"""
字典.pop(key)  --- 會返回被刪除的鍵值對對應(yīng)的值
"""
age = person.pop('age')
print(person, age)

3.相關(guān)的數(shù)組屬性(了解)

字典.keys():獲取字典所有的key,返回值的類型是dict_keys,但是可以把它當(dāng)成列表來使用
字典.values():獲取字典所有的值(value)
字典.items(): 將字典中所有的鍵值對轉(zhuǎn)換成一個一個的元
組,key作為元組的第一個元素,value作為元組的第二個元素

student_dict = {'name': '張三', 'study_id': "py1805001", 
'scores': {'english': 60, 'math': 100}}
keys = student_dict.keys()
print(keys, type(keys))
# 遍歷獲取每個key
for key in keys:
    print(key)

print(student_dict.values())

print(student_dict.items())

4.遍歷字典

a.直接遍歷字典獲取到的是所有的key(推薦使用)

for key in student_dict:
    print(key, student_dict[key])

b.遍歷直接獲取到key和value(不推薦使用)(增加運算負(fù)荷)

for key, value in student_dict.items():
    print(key, value)

for value in student_dict.values():
    print(value)

5.列表中有字典、字典中有字典、字典中有列表

聲明一個變量,作用是用來存儲一個班級的學(xué)生的信息。其中學(xué)生的信息包括姓名、性別、年齡、電話
至少存三個學(xué)生信息

class1 = [
    {'name': '張三', 'age': 23, 'sex': '男', 'tel': '15300022777'},
    {'name': '李四', 'age': 25, 'sex': '女', 'tel': '12779922'},
    {'name': '王二麻子', 'age': 20, 'sex': '男', 'tel': '12553'}
]

class1 = {
    'name': 'py1805',
    'address': '19-1',
    'students':[
        {'name': '張三', 'age': 18},
        {'name': '李四', 'age': 28},
        {'name': '王五', 'age': 20},
    ]
}

6.其他操作

1.fromkeys()
dict.fromkeys(序列, value):創(chuàng)建一個新的字典,序列中的元素作為key,value作為值

# new_dict = dict.fromkeys('abc', '100')
# new_dict = dict.fromkeys(range(10), '100')
new_dict = dict.fromkeys(['abc', 'dcc', '123'], '100')
print(new_dict)

2.in
key in 字典: 判斷字典中是否存在指定的key

dog_dict = {'color': 'white', 'age': 3,  'type': '土狗'}
print('color' in dog_dict)  # 判斷的是鍵是否存在
print('white' in dog_dict)

3.update
字典1.update(字典2): 使用字典2的鍵值對去更新字典1中的鍵值對。如果字典2中對應(yīng)鍵值對在字典1中不存在,就添加。存在就更新

dict1 = {'1': 'a', '2': 'b'}
dict1.update({'1': 'aaa', '3': 'bbb'})
print(dict1)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,602評論 19 139
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 30,262評論 8 265
  • 前天晚上,我們的簡書理財社群在主編大人亭主的安排下來了福利第二發(fā):有幸能夠聽到理財達人“一一媽媽說理財”給我們理財...
    愛折騰的公子哥閱讀 1,077評論 8 17
  • 一直很想打開這個賬戶,寫出一些東西,表達出什么?,F(xiàn)在13:49,我開始編輯下我的第一篇,感謝你的來訪,希望你能留下...
    Gwperg閱讀 222評論 0 0
  • 窮則獨善其身,方始清明。 心無所屬,了無牽掛。 夜,心亂。
    獨孤泠閱讀 121評論 0 0

友情鏈接更多精彩內(nèi)容