數據類型(字典)


字典{ }

字典是一種key-value的數據類型

定義:{key1:value1,key2:value2}

1、鍵與值用冒號“:”分開;
2、項與項用逗號“,”分開;
info = {
    "stu1101":"jack",
    "stu1102":"lily",
    "stu1103":"peiqi"
}

特性:

1.key-value結構
2.key必須可hash、且必須為不可變數據類型、必須唯一,不能重復
3.可存放任意多個值、可修改、可以不唯一
4.無序
5.查找速度快

只有當元組內的所有元素都為不可變類型的時候,才能成為字典的key

常見操作

創建

 dic.keys() 返回一個包含字典所有KEY的列表  

 dic.values() 返回一個包含字典所有value的列表   

 dic.items() 返回一個包含所有(鍵,值)元祖的列表

 dic.iteritems()、dic.iterkeys()、dic.itervalues() 與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表

info = {
    "1101":"小萌",
    "1102":"小智",
    "1103":"小強"
}

增加

dic.['new_key'] = 'value'

dic.setdefault( key, None),如果字典中不存在key鍵,由dic.[key] = default 為他賦值

info = {
    "1101":"小萌",
    "1102":"小智",
    "1103":"小強"
}
info["1104"] = "小王"#增加原字典中沒有的key
print (info)

  輸出

{'1101': '小萌', '1102': '小智', '1103': '小強', '1104': '小王'}

修改

增加新鍵/值對,修改或刪除已有鍵/值

dic['key'] = 'new_value',如果key在字典中存在,'new_value'將會替代原來的value值

dic.update(dic2)將字典dic2的鍵值對添加到字典dic中

info = {
    "1101": "小萌",
    "1102": "小智",
    "1103": "小強",
    '1104': '小王'
}
info["1103"] = "小張"#對制定key重新賦值
print (info)

  輸出

{'1101': '小萌', '1102': '小智', '1103': '小張', '1104': '小王'}

查找

 

dict.get(key, default = None) 返回字典中key對應的值,若key不存在字典中,則返回default的值(default默認為None)

dic["key"],返回字典中key對應的值,若key不存在字典中,則報錯

 

info = {
    "1101": "小萌",
    "1102": "小智",
    "1103": "小強",
    '1104': '小王'
}
print(info.get("1102"))#獲取指定key,對應的值
print(info.get("1108"))#獲取指定key,對應的值,若沒有返回None
print(info["1103"])#獲取 沒有會報錯

 

 輸出

info = {
"1101": "小萌",
"1102": "小智",
"1103": "小強",
'1104': '小王'
}

刪除 

dic.pop(key[,default]) 和get方法相似。如果字典中存在key,刪除並返回key對應的vuale;如果key不存在,且沒有給出default的值,則引發keyerror異常;     

dic.clear() 刪除字典中的所有項或元素;

dic.poitem())#隨機刪除一個,好像默認刪除最后一個

del dic[ ] #刪除指定鍵值

info = {
    "1101": "小萌",
    "1102": "小智",
    "1103": "小強",
    '1104': '小王',
    '1105': '小劉',
    "1106": "lily"
}
print(info.pop("1102"))#刪除指定key和對應的值
print(info)#獲取指定key,對應的值,若沒有返回None
print(info.popitem())#隨機刪除一個,好像默認刪除最后一個
del info["1106"]#刪除指定鍵值
info.clear()#刪除字典中的所有
print(info)

  輸出

小智
{'1101': '小萌', '1103': '小強', '1104': '小王'}
{}

判斷

“key” in dic #判斷某key是否在字典里

info = {
    "1101": "小萌",
    "1102": "小智",
    "1103": "小強",
    '1104': '小王'
}
print("1102" in info)#判斷某key是否在字典里

 

循環

for k in dic.keys()#循環字典key

for k,v in dic.items() #循環字典key和value

for k in dic #循環字典key

info = {
    "1101": "小萌",
    "1102": "小智",
    "1103": "小強",
    '1104': '小王'
}
for k in info.keys():  # 循環字典key
    print("@", k)
for k, v in info.items():  # 循環字典key和value
    print(k, v, "-")
for k in info:  # 循環字典key
    print("!", k)
for k in info:#循環key和值 ,
    print(k, info[k])    

  輸出

@ 1101
@ 1102
@ 1103
@ 1104
1101 小萌 -
1102 小智 -
1103 小強 -
1104 小王 -
! 1101
! 1102
! 1103
! 1104
1101 小萌
1102 小智
1103 小強
1104 小王

長度

len(dic) 

info = {
    "1101": "小萌",
    "1102": "小智",
    "1103": "小強",
    '1104': '小王'
}
print(len(info))

  輸出

4

多級字典嵌套

info = {
    "大學":{
        "1001": ["lily",22],
        "1002": ["peiqi",23],
        "1003": ["jack",24],
        "1004":["jerry",23]
    },
    "中學":{
        "2001":["nicole",16]
    },
    "小學":{
        "3001":["angel","9"]
    }
}
info["小學"]["3001"][1] += ",friend"
print(info["小學"]["3001"])

  輸出:

['angel', '9,friend']

dic.values() #打印所有value

dic.keys() #打印所有key

dic.items()#把字典轉成列表,把鍵和值轉為元組

dic.update()#擴展 把兩個字典合成一個。若有相同key,有對應值覆蓋,沒有創建

dic.setdefault()#如果有這個key,保留原值,如果沒有,就創建

dic.fromcase()#生成字典,批量生成

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM