字典的初識:
- why:串列可以儲存大量的資料,但資料間的關聯性不強,串列的查詢速度比較慢,
- 資料型別的分類(可變與不可變):
- 可變(不可哈希)的資料型別:list dict set(集合是無序的,不重復的資料集合,它里面的元素是可哈希的(不可變型別),但是集合本身是不可哈希(所以集合做不了字典的鍵))
- 不可變的資料型別(可哈希): str bool int tuple(該物件本身不可變),(做不可變型別做任何操作,方法都不會改變原物件)
- 字典:{}括起來,以鍵值對形式儲存的容器型資料型別,
- 鍵必須是不可變的資料型別,最常用的是str int,鍵是不能改變且無法修改,而值可以改變,可修改,可以是任何物件,
- 鍵是不能重復的,而值可以重復,
- 字典在3.5x版本之前(包括3.5)是無序的;字典在3.6x會按照初次建立字典的順序排序的,學術上不認為是有序的,字典3.7x以后都是有序的,
- 優點:查詢速度非常快,
- 缺點:以空間換時間,記憶體消耗巨大
洗掉集合的方法:set.discard()
字典的創建方式:
dic = dict((('i',1),('love',2),('you',3)))
print(dic)
>>>{'i': 1, 'love': 2, 'you': 3}
dic = dict(i=1,love=2,you=3)
print(dic)
>>>{'i': 1, 'love': 2, 'you': 3}
dic = dict({'i': 1, 'love': 2, 'you': 3})
print(dic)
>>>{'i': 1, 'love': 2, 'you': 3}
字典的增刪改查:
/1. 增
#方法一,直接增加,已有鍵則改,無鍵則增加,
dic = {'name':'山就在那兒'}
dic['age'] = '18'
print(dic)
>>>{'name': '山就在那兒', 'age': '18'}
dic['age'] = '20'
print(dic)
>>>{'name': '山就在那兒', 'age': '20', 'sex': '男'}
#方法二,setdefault,有則不變,無則增加
dic.setdefault('able')
print(dic)
>>>{'name': '山就在那兒','age':'20','able':None}
dic.setdefault('hobby':python)
print(dic)
>>>{'name': '山就在那兒', 'age': '20', 'able':None,'hobby':python}
dic.setdefault('age':18)
print(dic)
>>>{'name': '山就在那兒', 'age': '20', 'able':None,'hobby':python}
/2 . 刪:
#方法一,pop(),按照鍵洗掉,有回傳值,回傳的為字典的值,如果沒有要洗掉的鍵,則會報錯,但可以設定第二個兩個引數,無論字典中是否有此鍵,都不會報錯,若有此鍵則回傳值為此鍵的值,若無此鍵則,回傳值為第二個引數,
dic = {'name': '山就在那兒', 'age': '18'}
value = https://www.cnblogs.com/wby-110/p/dic.pop('age')
print(dic)
>>>{'name': '山就在那兒'}
print(value)
>>>18
a = dic.pop('hobby')
print(a)
>>>KeyError: 'hobby'
a = dic.pop('hobby','沒有此鍵值對')
print(a)
>>>沒有此鍵值對
#方法二,del,若無鍵會報錯,不推薦使用,
del dic['age']
#方法三,clear 清空
dic.claer()
print(dic)
>>>{}
/3. 改
dic['name'] = 18
添加多個元素的方法:dit.update() #見第六章
/4. 查:
dic = {'name':'山就在那兒','hobby_list':['book','python']}
print(dic['hobby_list']) #若沒有此鍵則會報錯,不建議用
>>>['book','python']
l1 = dic.get('hobby_list') #若沒有鍵則會回傳None,可以定義第二個引數,第二個引數即為回傳值
print(l1)
>>>['book','python']
#keys()
print(dic.keys()) #會回傳一個dict_keys型別,包含字典中所有的鍵,和串列相似,但不能索引,可轉化成串列:list(),可遍歷
>>>dict_keys(['name', 'hobby_list'])
#values()
print(dic.values()) #會回傳一個dict_values型別,包含字典中所有的值,和串列相似,但不能索引,可轉化成串列:list(),可遍歷
>>>dict_values(['山就在那兒', ['book', 'python']])
#items()
print(dic.items())
>>>dict_items([('name', '山就在那兒'), ('hobby_list', ['book', 'python'])])
for k,v in dic.items(): #元祖的拆包 for i in dic.items() print(i) 列印的結果資料為元祖
print(k,v)
>>>name 山就在那兒
hobby_list ['book', 'python']
/5. 字典的推導式的方式略有不同,主要是因為創建字典必須滿足鍵-值的兩個條件才能達成
dit = {i:i+1 for i in range(4)}
dit = {i:j for i,j in zip(range(4),’abcd’)}
/6. 字典的嵌套:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/176253.html
標籤:Python
上一篇:JVM 怎么判斷物件已經死了?
