1. 程式人生 > >python 資料型別 dict(字典)

python 資料型別 dict(字典)

快捷鍵複習

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')