python 字典詳細使用


1. 字典

  • 字典是無序、可變序列。
  • 定義字典時,每個元素的鍵和值用冒號分隔,元素之間用逗號分隔,所有的元素放在一對大括號“{}”中。
  • 字典中的鍵可以為任意不可變數據,比如整數、實數、復數、字符串、元組等等。
  • globals()返回包含當前作用域內所有全局變量和值的字典。
  • locals()返回包含當前作用域內所有局部變量和值的字典。

1.1 字典創建與刪除

  • 使用=將一個字典賦值給一個變量:

  >>> a_dict = {'server': 'localhost', 'database': 'mysql'}
  >>> a_dict
  {'database': 'mysql', 'server': 'localhost'}
  >>> x = {}       #空字典
  >>> x
  {}

  • 使用dict利用已有數據創建字典:

  >>> keys = ['a', 'b', 'c', 'd']
  >>> values = [1, 2, 3, 4]
  >>> dictionary = dict(zip(keys, values))
  >>> dictionary
  {'a': 1, 'c': 3, 'b': 2, 'd': 4}
  >>> x = dict()    #空字典
  >>> x
  {}

  • 使用dict根據給定的鍵、值創建字典

  >>> d = dict(name='xiao', age=17)
  >>> d
  {'age': 17, 'name': 'xiao'}

  • 以給定內容為鍵,創建值為空的字典

  >>> adict = dict.fromkeys(['name', 'age', 'sex'])
  >>> adict
  {'age': None, 'name': None, 'sex': None}

  • 可以使用del刪除整個字典

1.2 字典元素的讀取

  • 以鍵作為下標可以讀取字典元素,若鍵不存在則拋出異常

  >>> aDict = {'name':'xiao', 'sex':'male', 'age':17}
  >>> aDict['name']
  'xiao'
  >>> aDict['tel']      #鍵不存在,拋出異常
  Traceback (most recent call last):
  File "<pyshell#53>", line 1, in <module>
  aDict['tel']
  KeyError: 'tel'

  • 使用字典對象的get方法獲取指定鍵對應的值,並且可以在鍵不存在的時候返回指定值。

  >>> print(aDict.get('address'))
  None
  >>> print(aDict.get('address', 'chengdu'))
  chengdu
  >>> aDict['score'] = aDict.get('score',[])
  >>> aDict['score'].append(98)
  >>> aDict['score'].append(97)
  >>> aDict
  {'age': 37, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}

  • 使用字典對象的items()方法可以返回字典的鍵、值對
  • 使用字典對象的keys()方法可以返回字典的鍵
  • 使用字典對象的values()方法可以返回字典的值

  >>> aDict={'name':'xiao', 'sex':'male', 'age':17}
  >>> for item in aDict.items():
      print(item)

  
  ('name', 'xiao')
  ('sex', 'male')
  ('age', 17)
  >>> for key in aDict:      #不加特殊說明,默認輸出鍵
      print(key)

  
  age
  name
  sex
  >>> for key, value in aDict.items():      #序列解包用法
      print(key, value)


  age 17
  name xiao
  sex male
  >>> aDict.keys()      #返回所有鍵
  dict_keys(['name', 'sex', 'age'])
  >>> aDict.values()      #返回所有值
  dict_values(['xiao', 'male', 17])

1.3 字典元素的添加與修改

  • 當以指定鍵為下標為字典賦值時:1)若鍵存在,則可以修改該鍵的值;2)若不存在,則表示添加一個鍵、值對。

  >>> aDict['age'] = 18   #修改元素值
  >>> aDict
  {'age': 18, 'name': 'xiao', 'sex': 'male'}
  >>> aDict['address'] = 'sichuan'      #增加新元素
  >>> aDict
  {'age': 18, 'address': 'sichuan', 'name': 'xiao', 'sex': 'male'}

  • 使用字典對象的update()方法將另一個字典的鍵、值對添加到當前字典對象。

  >>> aDict
  {'age': 17, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}
  >>> aDict.items()
  dict_items([('age', 17), ('score', [98, 97]), ('name', 'xiao'), ('sex', 'male')])
  >>> aDict.update({'a':'a','b':'b'})
  >>> aDict
  {'a': 'a', 'score': [98, 97], 'name': 'xiao', 'age': 17, 'b': 'b', 'sex': 'male'}

  • 使用del刪除字典中指定鍵的元素
  • 使用字典對象的clear()方法來刪除字典中所有元素
  • 使用字典對象的pop()方法刪除並返回指定鍵的元素
  • 使用字典對象的popitem()方法刪除並返回字典中的一個元素

1.4 字典應用案例

  • 首先生成包含1000個隨機字符的字符串,然后統計每個字符的出現次數。

  >>> import string
  >>> import random
  >>> x = string.ascii_letters + string.digits + string.punctuation
  >>> y = [random.choice(x) for i in range(1000)]
  >>> z = ''.join(y)
  >>> d = dict()
  >>> for ch in z: #使用字典保存每個字符出現次數
      d[ch] = d.get(ch, 0) + 1


  >>> print(d)

1.5 字典推導式

    >>> {i:str(i) for i in range(1, 5)}
  {1: '1', 2: '2', 3: '3', 4: '4'}
  >>> x = ['A', 'B', 'C', 'D']
  >>> y = ['a', 'b', 'b', 'd']
  >>> {i:j for i,j in zip(x,y)}
  {'A': 'a', 'C': 'b', 'B': 'b', 'D': 'd'}
  >>> s = {x:x.strip() for x in (' he ', 'she ', ' I')}
  >>> s
  {' he ': 'he', ' I': 'I', 'she ': 'she'}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM