python學習筆記 day05 字典

2022-02-06 23:44:18 字數 4825 閱讀 2229

資料型別可以分為可變資料型別和 不可變資料型別兩種:

不可變資料型別:元組(tuple),bool, int,  str(對字串的任何操作都是產生乙個新的str,園幼兒字串是不變的)

可變資料型別: 列表(ist),字典(dict)

字典:對映結構,字典的key必須是不可變資料型別(元組,bool int ,str)

字典的優點:二分查詢;可儲存大量的關係型資料

1.直接增加鍵值對:

dic=

dic[

'hobbi

']='

dancing

'print(dic)

執行結果:

dic=

dic[

'hobbi

']='

dancing

'print(dic)

如果新增的鍵值是字典中已經存在的鍵,則會覆蓋該鍵對應的原來的值:

dic=

dic[

'hobbi

']='

dancing'#

如果沒有,會增加

dic['

name

']='

xuanzhang'#

如果有,會覆蓋

print(dic)

執行結果:

2.setdefault()方法

dic=

dic.setdefault(

'hobbi

') #

值預設,預設新增的對應該鍵的值為none

#dic.setdefault('hobbi','dancing')

print(dic)

執行結果:

如果setdefault()後面value對應的引數有值,則新增:

dic=

#dic.setdefault('hobbi') #值預設,預設新增的對應該鍵的值為none

dic.setdefault('

hobbi

','dancing')

print(dic)

執行結果:

如果setdefault中的鍵已經存在,則無任何變化:

dic=

dic.setdefault(

'name

','xuan')

print(dic)

執行結果:

所以,通過dict[key]=value 和dict.setdefault(key,value)方法的區別是:

當key在字典中不存在時,兩種方法都是在字典中增加該鍵值對;

當key在字典中已經存在時,前者會修改,即覆蓋,後者不會修改原來的值,即無變化,不進行任何操作;

dic.pop(key)方法:  有返回值,返回鍵對應的值

dic=

return_value=dic.pop('

name

') #

pop()方法有返回值,返回該鍵對應的值

print(return_value)

執行結果:

xuanxuan

dic.popitem():隨機刪除字典的鍵值對(python3.6字典有序,刪最後乙個),有返回值,返回鍵值對組成的tuple

dic=

return_value=dic.popitem() #

pop()方法有返回值,返回該鍵對應的值

print(return_value)

執行結果:

('

gender

', '

female

')

dict.clear()  #不是從記憶體中刪除,只是刪除字典中的元素,clear之後字典為空

dic=

dic.clear()

#不是從記憶體中刪除,沒有返回值

print(dic) #

字典空

執行結果:

{}

del dict : 刪除字典,從記憶體中徹底刪除,也可以指定刪除某乙個鍵

dic=

del dic['

name

'] #

可以刪掉字典中的某乙個鍵值對

print(dic)

執行結果:

刪除整個字典(從記憶體)

dic=

del dic #

從記憶體中刪掉字典

print(dic) #

會報錯

執行結果:

traceback (most recent call last):

file

"f:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day07/01.py

", line 12, in

print(dic) #

會報錯nameerror: name '

dic'

isnot defined

1. 可以直接指定鍵,通過賦值修改(因為字典是可變物件)

dic=

dic[

'name

']='

xuan

'print(dic)

執行結果:

2.dict1.update(dict2) 會更新dict1(按照dict2)

dict2有dict1中的鍵,則會覆蓋dict1,如果dict1中沒有,則會追加到dict1

dic=

dic2=

dic2.update(dic)

print(dic2)

執行結果:

dict.keys()     #返回字典的鍵,返回的結果可以當做list操作

dict.values()  #返回字典的值,返回的結果可以當做list操作

dic.itmes()    #返回字典的鍵值 成乙個tuple 返回的結果可以當做list操作

dic=

print(dic['

name

'])

執行結果:

xuanxuan

dic=

print(dic.keys()) #

返回的是dic的鍵,可以按照list進行操作

print(dic.values()) #

返回的是dic的值,可以相當於list進行操作

print(dic.items()) #

返回的是鍵值組成的tuple

執行結果:

dict_keys(['

name

', '

age', '

gender'])

dict_values([

'xuanxuan

', 22, '

female'])

dict_items([(

'name

', '

xuanxuan

'), ('

age', 22), ('

gender

', '

female

')])

dic=

for i in

dic: # for i in dic.keys():兩種方法都是返回dic的key

print(i)

執行結果:

name

agegender

dic.values()

for i in

dic.values():

print(i)

執行結果:

xuanxuan

22female

dic.items()

dic=

for i in

dic.items():

print(i)

執行結果:

('

name

', '

xuanxuan')

('age', 22)('

gender

', '

female

')

dic.get(key,none)  #返回字典的對應的值,當鍵不存在時,可以返回預設值none,當然也可以設定

dic=

print(dic.get('

name

')) #

xuanxuan

print(dic.get('

name1

','該鍵值不存在

')) #

並不會報錯,

執行結果:

xuanxuan

該鍵值不存在

Python學習筆記day05

高階函式 課後練習 不可變的資料型別一定可雜湊 hash 內建函式可以判斷某個型別是否可雜湊 s1 s2 s3 s4 print s1,s2,s3的交集 s1.intersection s2,s3 print s1,s2,s3的交集 s1 s2 s3 print s1,s2,s3的並集 s1.uni...

C 學習筆記 day05

1 變數的儲存 1 記憶體是一塊空間,把其中的每個位元組做了編號,為了以後計算機能通過編號找到資料 2 編址方式 絕對編址 在整個程式中使用 相對編址 位元組相對於邏輯0偏移量,在程序中使用 4 儲存位址 指標 儲存變數的位址 指標的型別由將要儲存的位址的變數型別決定 int 只能儲存int變數的位...

java學習筆記day05 陣列

陣列 是一種容器,可以同時存放多個資料值。陣列的特點 1.陣列是一種引用資料型別 2.陣列當中的多個資料,型別必須統一 3.陣列的長度在程式執行期間不可改變 陣列的初始化 在記憶體當中常見乙個陣列,並且象其中賦予一些預設值。兩種常見的初始化方式 1.動態初始化 指定長度 2.靜態初始化 指定內容 動...