字典{ }
字典是一種key-value的數據類型python
定義:{key1:value1,key2:value2}spa
一、鍵與值用冒號「:」分開; 二、項與項用逗號「,」分開;
info = { "stu1101":"jack", "stu1102":"lily", "stu1103":"peiqi" }
特性:code
1.key-value結構 2.key必須可hash、且必須爲不可變數據類型、必須惟一,不能重複 3.可存聽任意多個值、可修改、能夠不惟一 4.無序
5.查找速度快
只有當元組內的全部元素都爲不可變類型的時候,才能成爲字典的key
blog
常見操做
建立get
dic.keys() 返回一個包含字典全部KEY的列表
hash
dic.values() 返回一個包含字典全部value的列表
it
dic.items() 返回一個包含全部(鍵,值)元祖的列表
class
dic.iteritems()、dic.iterkeys()、dic.itervalues() 與它們對應的非迭代方法同樣,不一樣的是它們返回一個迭代子,而不是一個列表
擴展
info = { "1101":"小萌", "1102":"小智", "1103":"小強" }
增長date
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()#生成字典,批量生成