1. 程式人生 > >python中的數據類型之元組和字典

python中的數據類型之元組和字典

小括號 增加 pytho 元祖 .com objects 必須 err 以及

一、元組:俗稱不可變的列表,又被稱為只讀列表。元組用小括號括起來,裏面可以放任何數據類型的數據,查詢可以,循環也可以,切片也可以,但就是不能修改

註意:如果元組中只有一個元素,一定要加一個逗號,否則就不是元組。

>>> tu = (1,"Tanxu","A") #創建一個元組,用小括號括起來
>>> type(tu)
<class ‘tuple‘>
>>> tu1 = ("Tanxu")#當小括號內只有一個元素時,不是元組
>>> type(tu1)
<class ‘str‘>
>>> tu2 = ("Tanxu",)#元組只有一個元素時,要在該元素後加一個逗號
>>> type(tu2)
<class ‘tuple‘>
>>> tu3 = ()#定義一個空元組
>>> type(tu3)
<class ‘tuple‘>

註意:關於不可變,這裏元組不可變的意思是子元素不可變【即元組沒有修改操作】,而子元素內部的子元素可以改變,這取決於子元素是否是可變對象。【但是元組本身沒有改變】

>>> tu[2] = "Tan" #對元祖進行修改會報錯
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    tu[2] = "Tan"
TypeError: ‘tuple‘ object does not support item assignment

>>> tu4 = ("Tan","xu",[89,93,94])
>>> tu4[2][2] = 98 #可以對元素中子元素的子元素進行修改
>>> tu4
(‘Tan‘, ‘xu‘, [89, 93, 98])

 技術分享圖片

元組也有count、index、len等操作,用法同列表

二、字典:字典是以{}括起來的,內部使用key:value的形式來保存數據。如{“jay”:”周傑倫”,”jj”:”林俊傑”}

  註意:字典的key必須是可哈希的,不可變的【列表是不可哈希的】

補充:什麽是可哈希的(hashable)不該改變的(imutable)?【來自官方文檔翻譯】

如果一個對象在自己的生命周期中有一哈希值(hash value)是不可改變的,那麽它就是可哈希的(hashable)的,因為這些數據結構內置了哈希值,每個可哈希的對象都內置了__hash__方法,所以可哈希的對象可以通過哈希值進行對比,也可以作為字典的鍵值和作為set函數的參數。所有python中所有不可改變的的對象(imutable objects)都是可哈希的,比如字符串,元組,也就是說可改變的容器如字典,列表不可哈希(unhashable)。我們用戶所定義的類的實例對象默認是可哈希的(hashable),它們都是唯一的,而hash值也就是它們的id()。

>>> dic1 = {‘name‘:‘Tanxu‘,‘sex‘:‘女‘,‘age‘:18}
>>> type(dic1)
<class ‘dict‘>

 1、字典的相關操作:

  1)增加:

>>> dic1 = {‘name‘:‘Tanxu‘,‘sex‘:‘女‘,‘age‘:18}
>>> dic1[‘height‘] = 160 #直接添加,如果key重復了,會替換掉原來的value
>>> dic1
{‘name‘: ‘Tanxu‘, ‘sex‘: ‘女‘, ‘age‘: 18, ‘height‘: 160}

>>> dic1.setdefault(‘weight‘,45)#使用setdefault()添加元素時,返回的是value值;如果字典中存在了這個key,則不再進行保存操作
45
>>> dic1
{‘name‘: ‘Tanxu‘, ‘sex‘: ‘女‘, ‘age‘: 18, ‘height‘: 160, ‘weight‘: 45}

  2)刪除:

>>> dic1.pop("weight")#刪除一個元素,會返回這個元素對應的value值
45

>>> dic1.popitem()#刪除一個元素,返回這個元素的key和value,返回的是一個元組。默認刪除最後一個元素
(‘height‘, 160)

>>> dic1.clear()#清空字典
>>> dic1
{}

  3)查詢:

>>> dic1 = {‘name‘:‘Tanxu‘,‘sex‘:‘女‘,‘age‘:18}
>>> dic1[‘name‘] #如果key值存在,會返回其對應的value值;如果key值不存在,程序會報錯
‘Tanxu‘

#get方法:1)可以通過key值獲取value的值,如果key不存在,默認返回None
>>> print(dic1.get("Tanxu"))
None
>>> print(dic1.get(‘name‘))
Tanxu

#2)如果設置了默認返回值,則當key不存在時,返回該默認值
>>> print(dic1.get(‘height‘,‘160‘))
160

#setdefault操作==》1、首先判斷原來的字典中有沒有這個key,如果沒有則執行添加
#                 2、用這個key去字典中查詢,返回查到的結果
>>> ret1 = dic1.setdefault("name",1)
>>> print(ret1)
Tanxu

>>> ret2 = dic1.setdefault("height",160)
>>> print(ret2)
160

  4d1.update(d2) ==》把d2k-v更新到d1

>>> dic1 = {‘name‘:‘Tanxu‘,‘sex‘:‘女‘,‘age‘:18}
>>> dic2 = {"height":"160","weight":"45"}
>>> dic1.update(dic2)
>>> dic1
{‘name‘: ‘Tanxu‘, ‘sex‘: ‘女‘, ‘age‘: 18, ‘height‘: ‘160‘, ‘weight‘: ‘45‘}

 2、字典的其他相關操作

  1)得到字典中的key,value以及鍵值對

print(dict1.keys())  #拿到所有的key,返回key的集合,該集合可叠代循環
##for key in dict1.keys(): #循環遍歷key值
##        print(key)

print(dict1.values()) #拿到所有的value,返回value的集合,該集合可叠代循環
##for value in dict1.values(): #循環遍歷value值
##        print(value)

print(dict1.items()) #拿到所有的鍵值對,每一項都是元組,元組集合也可叠代
##for item in dict1.items():#循環遍歷key:value鍵值對
##      print(item)#返回元組
##      print(item[0]) #返回key
##      print(item[1]) #返回value
#遍歷字典
for k,v in dic1.items():
  print(k)
  print(v)

  2)解構,解包

##解構  解包
a,b = (1,2) #即把a賦值為1,b賦值為2
print(a)

  3)字典的嵌套

dic = {
        "name":"Tanxu",
        "age":"19",
        "hobby":"listen music",
        "frend1":{
                 "name":"李四",
                  "age":"22",
                  "hobby":"writting"
                },
         "frend2":{
                 "name":"王五",
                 "age":"19",
                 "hobby":"singing"
                }
        }

print(dic["frend1"]["name"]) 

三、range操作(叠代循環)

語法:

range(開始,結束,步長)默認開始可以取到,結束取不到,步長可以為負數

實例:

1、循環:for i in range(10):   #打印0 - 9
Print(i)
2、循環:for i in range(3,9):   #打印3 - 8
Print(i)
3、循環:for i in range(3,10,2):   #打印3,5,7,9
Print(i)
4、循環:for i in range(10,1,-1):   #打印10,9,8,7,6,5,4,3,2
Print(i)
5、循環:for i in range(10,-10,-1):   #打印10,9,8,7,6,5,4,3,2,1,0,-1,-2,……,-9
Print(i)

  

python中的數據類型之元組和字典