天天看點

python 類 字典_python基礎類型—字典

字典

字典是python中唯一的映射類型,采用鍵值對(key-value)的形式存儲資料。python對key進行哈希函數運算,根據計算的結果決定value的存儲位址,是以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數字、字元串、元組。

字典(dictionary)是除清單意外python之中最靈活的内置資料結構類型。清單是有序的對象結合,字典是無序的對象集合。兩者之間的差別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。

可變資料類型:清單list,字典dict     又叫不可哈希

不可變資料類型: 元祖,bool值,數字int,字元型str            本身不可變,又叫可哈希

key  鍵,必須是不可變類型,可哈希

value 值,任意資料類型

建立空字典使用 { }

字典dict優點:

1,用二分法查詢,查詢速度快

2,儲存大量的關系型資料

字典dick特點:

字典dict是無序的。(3.5及之前的字典dict是無序的)

簡寫為dic

dic = {

'name':'xiaoming',

'age':18,

'num':[1,2,3,'alex'],

's1':{'xiao':'han','gh':[1,2,3,4]},

'qq':123

}

print(dic)

結果 {'name': 'xiaoming', 'age': 18, 'num': [1, 2, 3, 'alex'], 's1': {'xiao': 'han', 'gh': [1, 2, 3, 4]}, 'qq': 123}

增,兩種方法(注意與清單list差別)

直接加,如果沒有對應鍵值,則直接加在後面。如果有對應鍵值,則進行覆寫。

dic1 ={'name':'xiaojun'}

dic1['height'] = 180

print(dic1)

dic.setdefault('') 形式,有對應鍵值,則不做任何修改。沒有對應鍵值,後面預設加None

dic = {

'name':'xiaoming',

'age':18,

'num':[1,2,3,'alex'],

's1':{'xiao':'han','gh':[1,2,3,4]},

'qq':123

}

dic.setdefault('weighe')

print(dic)

dic.setdefault('weighe',180) 另一種形式

dic = {

'name':'xiaoming',

'age':18,

'num':[1,2,3,'alex'],

's1':{'xiao':'han','gh':[1,2,3,4]},

'qq':123

}

dic.setdefault('weighe',180)

print(dic)

結果 {'name': 'xiaoming', 'age': 18, 'num': [1, 2, 3, 'alex'], 's1': {'xiao': 'han', 'gh': [1, 2, 3, 4]}, 'qq': 123, 'weighe': 180}

删,

dic.pop(‘’)直接删

dic = {'name':'xiaoming','age':18}

dic.pop('age')

print(dic)

有傳回值,傳回被删除的鍵值

dic = {'name':'xiaoming','age':18}

s = dic.pop('age')

print(s)

結果18

可設定傳回值,如果沒有對應的被删鍵值,傳回自己設定的值,就是下面的‘不錯’

dic = {'name':'xiaoming','age':18}

s = dic.pop('aa','不錯') #如果aa變成name,則傳回小明

print(s)

結果 不錯

dic.popltem()形式,随機删除一個,3.6版本預設删除最後一個

dic = {'aa':'xiaoming','age':18}

dic.popitem()

print(dic)

結果 {'aa': 'xiaoming'}

dic = {'aa':'xiaoming','age':18} #這種,有傳回值

print(dic.popitem())

結果 ('age', 18)

清空清單

dic = {'aa':'xiaoming','age':18}

dic.clear()

print(dic)

結果 {}

直接改

dic = {'name':'xiaoming','age':18}

dic['age'] = 16

print(dic)

dic1.update(dic)覆寫增加,把dic覆寫增加到dic1中,

dic = {'name':'xiaoming','age':18}

dic1 ={'name':'xiaojun','height':180}

dic1.update(dic)

print(dic1)

dic和dic1中對應的鍵,則用dic的鍵值覆寫dic1的,dic沒有與dic1中對應的減,則直接加入dic1中,dic1中多的鍵值,則直接保留

結果{'name': 'xiaoming', 'height': 180, 'age': 18}

dic['直接查']直接查,沒有會報錯

dic = {'name':'xiaoming','age':18}

print(dic["name"])

dic.get('high','設定傳回的值‘)

dic = {'name':'xiaoming','age':18}

print(dic.get("high","預設傳回值") ) # 沒有可以傳回設定的傳回值

#print(dic.get('high')) 預設傳回None

隻列印鍵

dic = {'name':'xiaoming','age':18} = dic = {'name':'xiaoming','age';18}

for i in dic: = for i in dic.keys():

print(i) = print(i)

結果 name 結果 name

age age

隻列印值

dic = {'name':'xiaoming','age':18}

for i in dic.values():

print(i)

結果 xiaoming

18

a = 1

b = 2

a,b = b,a

print(a,b)

items 同時列印keys 和 valuces

dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}

for i in dic.items():

print(i)