常見數據類型(二)

字典 dict

字典是能夠精準儲存資訊的數據類型

      '''形式是用花括弧括起來的多個K:V鍵值對。鍵值對之間用逗號隔開
         K;V鍵值對里的V是指任意類型的真實數據,K是對V的描述性資訊,一般是字元串
'''
     例如:info = { 'user_name':'oliver',  'age':23, 'hobby':'games', 'job':'student'}
      '''其中user—name、age、hobby、job是K鍵,而oliver、23、games、 student是V的真實數據'''

附:詞典內部的元素是無序的,所以無法進行索引取值。我們想訪問詞典里的資訊的時候可以通過K鍵進行訪問。例:name_info = info[‘age’]
info = {'user_name':'oliver', 'age': 23, 'hobby': 'game', 'job': 'student'} name_info = info['age'] print(name_info)
以上程式碼就是訪問列表info里的K鍵為’age’的數據,運行結果如下圖

字典與列表多層嵌套的解決方式

 問題如下:請在以下程式碼中取出睢陽區

data = {
    'name': 'oliver',
    'age': 18,
    'hobby': 'games',
    'add': {'河南': 
              {'鄭州': '金水',
               '開封': '中牟', 
               '商丘': [
                    '睢陽區', 
                    '梁園區'
                       ]
              }, 
             '湖北': '武漢'}
   }

解釋:乍一看這個程式碼符號很多,有列表類數據,也有字典類數據。接下來我們先來逐層拆解

        dict1 = data['add']  # 取鍵add對應的值{'河南': {'鄭州': '金水', '開封': '中牟', '商丘': ['睢陽區', '梁園區'}, '湖北': '武漢'}
        dict2 = dict1['河南']  # 索鍵河南對應的值 {'鄭州': '金水', '開封': '中牟', '商丘': ['睢陽區', '梁園區']}
        dict3 = dict2['商丘']  # 取鍵商丘對應的值['睢陽區', '梁園區']
        add_name = dict3[0]  # 索引取值'睢陽區'

方式一:我們可以從外向內逐級拆解。

  • 第一步觀察data這個大的字典內有4個K:V鍵值對元素:獲取add的數據賦給dict1
  • 然後我們觀察這個dict1里有兩個鍵值對元素:獲取河南的數據賦值給dict2
  • 然後觀察dict2里有三個鍵值對元素,獲取商丘的數據賦值給dict3
  • 最後dict4是一個列表,有兩個元素,索引取值睢陽區賦值給add_name,這樣輸出最後的add_name就可以得到想要的『睢陽區』

上述訪問「睢陽區」的步驟太繁瑣了,可以整合以下上述步驟的一系列操作

方式二:直接採取多重訪問和索引取值的方式

      add_name = data['add']['河南']['商丘'][0]  # 從前往後依次訪問取值
      # 依次是訪問data(字典)里的add(字典)的河南(字典)的商丘(列表)的睢陽區

也可以得到相同的運行結果

不常用數據類型

集合 set

這種類型的數據功能單一,主要被用於去重和關係運算

    具體形式:
      1. 用花括弧括起來
      2. 內部可以存放多個任意類型元素
      3. 並且元素之間用逗號分隔開
      4. 與字典不同的是其內部元素不是K:V鍵值對
      例:set_name =  {1, 2, 'ok', 3.33}

附與字典類型數據相似,當花括弧里為空時,默認為是字典類型數據

元組 tuple

元組與列表幾乎一致,只不過形式的外部括弧列表是中括弧,元組是小括弧。而且元組內的元素不可以更改。

      具體形式:
        1. 小括弧括起來
        2. 內部可儲存多個任意類型元素
        3. 元素之間用逗號隔開
        例:t = (1,2,3,4.5,'kk')

附:元組內元素不可更改的解釋
先不對元祖內數據進行更改,程式碼:

     t1 = (11, 22, 33)  # 定義一個元組t1
     print(t1)  # 輸出該元組

運行結果:

然後對元組內數據進行更改,程式碼:
“`python
t1 = (11, 22, 33) # 定義一個元組t1
t1[1] = 117 # 對元祖內的第二個數據進行更改
print(t1) # 輸出該元組
“`
運行結果:

更改資訊以後程式碼不能運行了,並且報錯資訊為「’tuple’ object does not support item assignment」,意為元組項目內容不支援元素更改。

布爾值

  1. 布爾值只有 True 和 False 兩種狀態
  2. 用來描述事物是否可行、對錯的,主要用於邏輯判斷
  3. 所有的數據在python中進行邏輯判斷是都會被轉換成布爾值
    0  None 空列表、空字元串、空字典……默認布爾值都是False
    其餘情況都是True
    涉及布爾值的變數名命名一般用is開頭 
    例:is_right = True