字典

字典

  • 字典(dictionary)與串列很像,但是它不在乎項目的順序,而且不用位移值來選擇項目
  • 字典是可變的,可以添加、刪除、改變它們的「鍵/值」元素

鍵(key)

  • 必須為每一個值指定一個獨一無二的鍵(key)
  • 鍵(key):可以用任何一種不可變的 Python 類型 — 布林、整數、浮點數、tuple、字串(通常是字串

其他語言

  • 其他語言可能會將字典稱為關聯陣列(associative)、雜湊(hash)、或 hashmap
  • 如果你曾經用過只支援陣列或串列的語言,你會愛上字典
  • 在 Python,字典也可稱為 dict 來減少字母數

建立字典【使用 {}】

  • 要建立字典,要用大括號包住逗號分隔鍵:值
  • 字典名稱 = {鍵:值, 鍵:值, 鍵:值}
  • 在 Python 中,可以省略串列、tuple或字典最後一個項目之後的逗號
  • 在大括號內輸入鍵與值時,不需要縮排排列,那只是為了協助閱讀

空字典

  1. 字典名稱 = {}
  2. 字典名稱
  3. {}
>>> empty_dict = {}
>>> empty_dict
{}

製作字典

  1. 字典名稱 = {鍵:值, 鍵:值, 鍵:值}
  2. 字典名稱
  3. {鍵:值, 鍵:值, 鍵:值}
>>> bierce = {
    "day": "A period of twenty-four hours, mostly misspent",
    "positive": "Mistaken at the top of one's voice",
    "misfortune": "The kind of fortune that never misses",
    }
>>> bierce
{'day': 'A period of twenty-four hours, mostly misspent', 'positive': "Mistaken at the top of one's voice", 'misfortune': 'The kind of fortune that never misses'}

轉換【使用 dic()】

  • 可以使用 dict() 函式,將雙值序列轉換到字典
  • 雙值序列鍵/值序列,每個序列的第一個項目被當成鍵,第二個項目被當成值(例如:"Strontinum, 90" 或 "Vikings, 20, Packers, 7")
  • 在字典裡面,鍵的順序是任意排列,可能會根據你添加項目的方式而有所不同
  • 可以使用任何存放雙項目序列序列

雙項目「串列」的「串列」 → dict()

  1. 串列名稱 = [['字串','字串'], ['字串','字串'], ['字串','字串']]
  2. dict(串列名稱)
  3. {'字串': '字串', '字串': '字串', '字串': '字串'}
>>> lol = [['a', 'b'], ['c', 'd'], ['e', 'f']]
>>> dict(lol)
{'a': 'b', 'c': 'd', 'e': 'f'}

雙項目「Tuple」的「串列」 → dict()

  1. 串列名稱 = [('字串', '字串'), ('字串', '字串'), ('字串', '字串')]
  2. dict(串列名稱)
  3. {'字串': '字串', '字串': '字串', '字串': '字串'}
>>> lot = [('a', 'b'), ('c', 'd'), ('e', 'f')]
>>> dict(lot)
{'a': 'b', 'c': 'd', 'e': 'f'}

雙項目「串列」的「Tuple」 → dict()

  1. tuple名稱 = (['字串','字串'], ['字串','字串'], ['字串','字串'])
  2. dict(tuple名稱)
  3. {'字串': '字串', '字串': '字串', '字串': '字串'}
>>> tol = (['a', 'b'], ['c', 'd'], ['e', 'f'])
>>> dict(tol)
{'a': 'b', 'c': 'd', 'e': 'f'}

雙字元「字串」的「串列」 → dict()

  1. 串列名稱 = ['字元1字元2', '字元3字元4', '字元5字元6']
  2. dict(串列名稱)
  3. {'字元1': '字元2', '字元3': '字元4', '字元5': '字元6'}
>>> los = ['ab', 'cd', 'ef']
>>> dict(los)
{'a': 'b', 'c': 'd', 'e': 'f'}

雙字元「字串」的「Tuple」→ dict()

  1. tuple名稱 = ('字元1字元2', '字元3字元4', '字元5字元6')
  2. dict(tuple名稱)
  3. {'字元1': '字元2', '字元3': '字元4', '字元5': '字元6'}
>>> tos = ('ab', 'cd', 'ef')
>>> dict(tos)
{'a': 'b', 'c': 'd', 'e': 'f'}

添加或變更項目【使用 [鍵]】

  • 添加項目到字典 → 用項目鍵參考,並指派值
    • 字典已經有這個鍵 → 「既有的值」會被換成「新的值」
    • 鍵是新的 → 「鍵與值」一起被加到字典
  • 串列不同的是,不需要擔心指定的索引值超出範圍,而讓 Python 丟出例外
  • 字典的鍵必須是獨一無二

添加

  1. 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
  2. 字典名稱
  3. {鍵1:值1, 鍵2:值2, 鍵3:值3}
  4. 字典名稱['鍵4'] = '值4' → 添加鍵/值
  5. 字典名稱
  6. {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4}
    'Chapman': 'Graham',
    'Cleese': 'John',
    'Idle': 'Eric',
    'Jones': 'Terry',
    'Palin': 'Michael',
    }
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael'}

>>> pythons['Gilliam'] = 'Gerry'
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Gilliam': 'Gerry'}

變更

  1. 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4}
  2. 字典名稱['鍵4'] = '值5'
  3. 字典名稱
  4. {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值5}
>>> pythons['Gilliam'] = 'Terry'
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Gilliam': 'Terry'}
>>>

多次使用同一個鍵,最後一個值會勝出

  1. 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4, 鍵4:值5}
  2. 字典名稱
  3. {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值5}
>>> some_pythons = {
    'Graham': 'Chapman',
    'John': 'Cleese',
    'Eric': 'Idle',
    'Michael': 'Palin',
    'Terry': 'Gilliam',
    'Terry': 'Jones',
    }
>>> some_pythons
{'Graham': 'Chapman', 'John': 'Cleese', 'Eric': 'Idle', 'Michael': 'Palin', 'Terry': 'Jones'}
>>>

results matching ""

    No results matching ""