python 入門之 – 資料字典(十八)
通過標題名稱可以知道,字典是用來查詢資料的,它是以 key
和 value
的形式存在的,在學習資料字典之前我來用幾個例子說明一下,如:
info = [
['張三',21,'男','程式設計師'],
['李四',18,'女','設計師'],
['王五',26,'男','策劃'],
['趙六',21,'男','實習生'],
]
這裡是一組人員的資訊,我現在要找到張三的資訊,個人資訊,並且我是不知道他在陣列的第幾個的,那麼這個時候我肯定要用迴圈了,如:
for i in info :
if i[0]=='張三' :
print (i)
結果為:['張三', 21, '男', '程式設計師']
這樣是沒毛病的,但是 python
給我們提供了一種更加友好的資料型別,那就是標題裡面的 字典,這樣我其實一行程式碼就可以找到該資料,而不需要通過迴圈來操作三行程式碼了,我現在把資料結構型別改變一下如:
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
"趙六":[21,'男','實習生'],
}
上方資料結構就是 python
中的字典,其實有過程式設計基礎的朋友就知道了,他不就是一個 json
json
格式的,在 python
裡面 json
格式就是資料字典,那麼有了資料字典之後我在來查詢一下關於張三的資料,其實就簡單了,如:
print(info['張三'])
執行上方 print
之後在控制檯打印出來的資料就是這樣的了:[21, '男', '程式設計師']
,這樣一來是不是簡介明瞭多了,我直接通過 info
這個物件集合的座標名就拿到了對應的資料。
在 python
的資料字典裡面有幾個至關重要的特性,必須要掌握的,如:
1、字典必須是由 {}
括號包裹住的
2、key:value
結構
3、key
必須是可 hash
、且必須為不可變資料型別、必須唯一
4、可存放任意多個值、可修改、可以不唯一
5、無須
6、查詢速度快
在 python
中字典也是可以進行 增刪改查 的,以下有幾個在 python
中常用的字典方法:
增加:
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師']
}
info["王五"]=[26,'男','策劃']
print(info)
輸出結果為:{'張三':[21,'男','程式設計師'],'李四':[18,'女','設計師'],'王五':[26,'男', 策劃']}
修改:
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃']
}
info["張三"] = [18,'男','程式設計師']
info["張三"][1] = '女'
print(info)
輸出結果為:{'張三':[18,'女','程式設計師'],'李四':[18,'女','設計師'],'王五':[26,'男','策劃']}
判斷一個屬性是否存在資料字典內:
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃']
}
"張三" in info
>> True
查詢:
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃']
}
info.get("張三") #通過 get() 方式查詢,如果找不到的話會返回一個 None
>> [21,'男','程式設計師']
info["李四"] #直接通過值查詢,如果找不到的話會報錯
>> [18,'女','設計師']
刪除:
關於刪除有好幾種方法,先來看看第一種:pop()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
"趙六":[21,'男','實習生'],
}
info.pop("趙六") #刪除那個值,就把 key 值寫進去
print(info)
>> {'張三': [21, '男', '程式設計師'], '李四': [18, '女', '設計師'], '王五': [26, '男', '策劃']}
第二種:del
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
"趙六":[21,'男','實習生'],
}
del info["趙六"] #刪除那個值,就把 key 值寫進去
print(info)
>> {'張三': [21, '男', '程式設計師'], '李四': [18, '女', '設計師'], '王五': [26, '男', '策劃']}
以上兩種就是刪除的方法,關於刪除其實還有一種隨機刪除資料,只有在非常多資料的情況下,才會隨機刪除,這種資料量的大小我目前還不太清楚是多少,資料比較少的情況下會刪除最後一個,但是這種方法不常用,因為作為開發者來說,我們一般不回去隨機刪除,都是指定刪除我們不需要的資料,我還是把這種隨機刪除的方法記錄一下吧:popitem()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info.popitem()
print(info)
>> {'張三': [21, '男', '程式設計師'], '李四': [18, '女', '設計師']}
以上常用的增刪改查就說完了,說白了,其實就是操作 json
資料,json
和陣列一樣都可以層層巢狀,如:
{
"a":{
"list":[
{
"a":"12312",
"b":123,
"c":[
{
"a":"b"
}
]
}
]
}
}
這就是常規的 json
格式了,如果還看不懂的朋友可以去了解一下什麼是 json
,因為這個是必學的知識點,今後在資料庫裡面儲存的全部都是這種 json
格式,學 python
不可能不和資料庫打交道的。
除去以上常規的增刪改查方法,其實 python
還內建了幾個其他的方法,如:
clear()
: 清空整個字典
copy()
: 複製整個字典,和陣列(列表)當中一摸一樣的用法,這裡不細說,不知道的朋友可以去看我寫的python 入門十二章節和十四章節
keys()
: 獲取整個字典中的 key 值
values()
: 獲取整個字典中的 value 值
items()
: 將整個字典轉成一個數組,並且數組裡面的 key 和 value 都以一個個的小元祖排序
update()
: 將兩個元祖進行拼接
setdefault()
: 往字典裡面新增 key~value ,如果發現 key 存在將會返回 key 的 value,否則就將資料新增進去
fromkeys()
: 構造一個初始化的字典(json),並且返回
clear()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info.clear()
print(info)
>> {}
keys()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info.keys()
>> dict_keys(['張三', '李四', '王五']) #將獲取的 key 值變成了一個列表紮實
values()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info.values()
>> dict_values([[21, '男', '程式設計師'], [18, '女', '設計師'], [26, '男', '策劃']])#將獲取的 value 值變成了一個列表紮實
items()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info.items()
>> dict_items([('張三', [21, '男', '程式設計師']), ('李四', [18, '女', '設計師']), ('王五', [26, '男', '策劃'])])
update()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info2 = {
"趙六":[21,'男','程式設計師'],
"李四":[30,'人妖','表演'],
}
info.update(info2)
print(info)
>> {'張三': [21, '男', '程式設計師'], '李四': [30, '人妖', '表演'], '王五': [26, '男', '策劃'], '趙六': [21, '男', '程式設計師']}
setdefault()
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
info.setdefault('王五','123') #王五存在,將王五的 value 返回出來
>> [26,'男','策劃']
info.setdefault('趙六','123') #趙六不存在,沒有返回值,所以新增成功
print(info)
>> {'張三': [21, '男', '程式設計師'], '李四': [18, '女', '設計師'], '王五': [26, '男', '策劃'], '趙六': '123'}
fromkeys()
info = {}
info = info.fromkeys(['a','b','c'],'123') #第一個引數為陣列,定義一個表的key值,第二個值為初始化的value值,可以是任何型別的資料,如果不寫預設返回 None
print(info)
>> {'a': '123', 'b': '123', 'c': '123'}
以上就是 python
內建的所有字典的方法了,但是通過測試我發現其實字典和陣列一樣也是可以迴圈的,如:
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
for i in info:
print(i)
>> 張三
>> 李四
>> 王五
可以看到迴圈出來的只有 key
值,那麼我想要列印他的 value
值,可以進行如下操作
info = {
"張三":[21,'男','程式設計師'],
"李四":[18,'女','設計師'],
"王五":[26,'男','策劃'],
}
for i in info:
print(info[i])
>> [21,'男','程式設計師']
>> [18,'女','設計師']
>> [26,'男','策劃']
可以看到這樣就完美實現了迴圈資料字典,其實我只是用 JavaScript
的程式設計思路測試了一下,沒想到還真的成功了。
好了,今天的把 python
的資料字典以及操作方法全部學完了,每天一點進步,讓自己過的更加充實!