python 資料型別 dict(字典)
阿新 • • 發佈:2019-02-05
快捷鍵複習
alt + enter 匯入需要的模組。
alt + r 替代
ctrl+ / 註釋
ctrl + shitf + F 專案內查詢關鍵字
ctrl + f 檔案內查詢關鍵字
字串的方法複習
find 查詢 replace 替代 split 分割 "".join 插入 format 格式化 startwith 檢查字串是否是以 obj 開頭 False endswith 檢查字串是否是以 obj 結束 strip 頭尾去空格
字典
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
一個簡單的字典例項:
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
訪問字典裡的值
把相應的鍵放入熟悉的方括弧,如下例項:
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print("你的名字叫:",mes["name"])
print(mes["age"],"歲")
print("來自",mes["address"])
你的名字叫: 陳淮聰
26 歲
來自 廣東
字典的方法
* dict.get()*
獲取key的返回值
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print(mes.get("name"))
dict.pop()
刪除字典給定鍵 key所對應的值,返回值為被刪除的值。key值必須給出。否則,返回default值。
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print(mes.pop("age"))
print(mes)
dict.copy()
返回一個字典的淺複製,如果已賦值的形式,結果會隨著操作改變
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
n = mes
m = mes.copy()
print("address:",mes.pop("address"))
print("n = mes:",n)
print("m = mes.copy:",m)
address: 廣東
n = mes: {'name': '陳淮聰', 'age': 26}
m = mes.copy: {'name': '陳淮聰', 'age': 26, 'address': '廣東'}
dict.keys()
以列表返回一個字典所有的鍵
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print(mes.keys())
dict_keys(['name', 'age', 'address'])
dict.values()
以列表返回字典中的所有值
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print(mes.values())
dict_values(['陳淮聰', 26, '廣東'])
dict.items()
以列表返回可遍歷的(鍵, 值) 元組陣列
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print(mes.items())
for item in mes.items():
print(item)
dict_items([('name', '陳淮聰'), ('age', 26), ('address', '廣東')])
('name', '陳淮聰')
('age', 26)
('address', '廣東')
dict.setdefault()
和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
print(mes.setdefault("age"))
print(mes.setdefault("school"))
print(mes)
26
None
{'name': '陳淮聰', 'age': 26, 'address': '廣東', 'school': None}
dict.update()
把字典dict2的鍵/值對更新到dict裡,相當於+
n = dict(a = 1 , b = 2)
m = dict(x = 10, y = 100)
n.update(m)
print(n)
{'a': 1, 'b': 2, 'x': 10, 'y': 100}
update使用方式,先宣告,再使用
a = dict()
n = dict(a = 1 , b = 2)
m = dict(x = 10, y = 100)
a.update(n)
print(a)
{'a': 1, 'b': 2}
dict.clear()
刪除字典內所有元素
mes = \
{"name" : "陳淮聰",
"age" : 26,
"address" : "廣東"
}
mes.clear()
print(mes)
{}
zip
高階函式
l1 = ["a","b","c","d"]
l2 = [1,2,3,4]
print(dict(zip(l1,l2)))
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
python2 和 python3 的區別
print(a.items()) 全部存到記憶體中。
python2存在:print(a.iteritems()) 每迴圈一次取一次物件
python3中 dict.items 集成了python2_dict.iteritems
a = dict()
n = dict(a = 1 , b = 2)
m = dict(x = 10, y = 100)
print(type(n.items()))
<class 'dict_items'>
強制型別轉換
list()
int()
str()
float()
tuple()
dict()
help()
isinstance()
判斷是否為已知的型別
l1 = ["a","b","c","d"]
l2 = [1,2,3,4]
l3 = (dict(zip(l1,l2)))
print(isinstance(l1,list))
print(isinstance(l3,dict))
enumerate()
enumerate(sequence, [start=0])
sequence 一個序列、迭代器或其他支援迭代物件。
start – 下標起始位置。
l1 = ["a","b","c","d"]
for i,j in enumerate(l1):
print(i,j)
0 a
1 b
2 c
3 d
l1 = ["a","b","c","d"]
for x in enumerate(l1):
print(x)
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')