Python資料結構(一) 字典

來源:互聯網
上載者:User

標籤:字典

0x 01 字典簡介

    子典和列表是python中最常用的兩種資料類型,字典是索引值對(key-value)格式的資料類型,它和列表一樣也有索引,但不是列表中的下標,而是使用key來作為索引,key所對應的值就是value,所以字典是無序的,因此任何時候只要訪問字典的key,便可以得到對應的value,。key必須是不可變類型且唯一(和set一樣天生去重),比如字串、數字、元祖等。


0x 02 字典和其它常見資料類型的區別

資料類型    符號表示   是否可變類型(一旦賦值是否可修改)

列表               []         可變類型

元祖               ()         不可變類型

集合               {}         可變類型

字典               {}         可變類型     


下面介紹一些字典常見的操作:


0x 03 字典的建立、添加

最簡單建立字典並添加元素的方式:

dic = {}       dic[‘key1‘] = 1dic[‘key2‘] = 2dic[‘key3‘] = 3


直接列印字典名看下最終dic字典的資料有哪些:

print(dic){‘key2‘: 2, ‘key1‘: 1, ‘key3‘: 3}


上面我們建立了一個名為dic的空字典,並分別為字典添加了三個key:key1,key2,key3,每個key都有對應的value,最終查看的結果中再次證明字典儲存是無序的(沒有先後順序的)。


0x 04 字典的刪除

dic.popitem()    #調用字典的popitem()方法,隨機刪除一個元素{‘key2‘: 2, ‘key3‘: 3}dic.pop(‘key2‘)     #調用pop()方法,刪除指定的key{‘key1‘: 1, ‘key3‘: 3}del dic[‘key3‘]      #指定刪除字典中的索引(即key)及其值(value){‘key1‘: 1, ‘key2‘: 2}


0x 05 字典的修改

dic[‘key2‘] = 4      #重新賦值即定義{‘key1‘: 1, ‘key2‘: 4, ‘key3‘: 3}


0x 06 字典的尋找

print(dic[‘key2‘])       #直接使用key來尋找對應的值2print(dic[‘key4‘])       #key方式直接讀取,如果沒有找到key對應的值,就會拋出KeyError異常KeyError: ‘key4‘print(dic.get(‘key3‘))   #使用get()方法,如果值存在就返回3print(dic.get(‘key4‘))    #get()方法如果發現值不存在,則會返回一個None對象,更加友好的輸出Noneprint(dic.setdefault(‘key3‘,‘33‘))   #setdefault()方法,如果指定的key已存在,則返回當前的值3print(dic.setdefault(‘key4‘,‘44‘))  #如當前key不存在,則設定一個預設值添加到字典並返回value的值44print(dic)                      #最終的字典{‘key3‘: 3, ‘key2‘: 2, ‘key1‘: 1, ‘key4‘: ‘44‘}


再看一下字典的keys()、values()、items()方法的區別:

[print(i) for i in dic.keys()]   #可以看到keys()儲存的是字典的key(鍵的名字)key1key3key2[print(i) for i in dic.values()]  #values()儲存的是所有的values(值)132[print(k,v) for k,v in dic.items()]  #而items()則是儲存了key及key對應的values()key1 1key3 3key2 2


0x 07 字典的使用(一)

"""使用字典來實現:使用者輸入一個數字,列印每一位元字及其重複的次數"""# 判斷使用者輸入是否是數字print(‘[note] please input a integer.‘)while True:    num = input(‘>>> ‘).strip().lstrip(‘0‘)    if num.isdigit():        break    else:        print(‘[Error] You input is not a number, please re-input.‘)#空字典nums = {}#value值遞增for i in num:    if not nums.get(i):  #返回key對應的值value        nums.setdefault(i, 1)    else:        print(nums.get(i))        nums[i] += 1#迭代輸出for k, v in nums.items():  #keys()   values()    items()    print(k, v)


0x 08 字典的使用(二)

"""數字重複統計    隨機產生100個整數    數位範圍[-1000,1000]    升序輸出所有不同的數字及其重複的次數"""import randomnums = {}for _ in range(100):    randnums = random.randrange(-1000, 1000)    if nums.get(randnums):        nums[randnums] += 1        continue    else:        nums.setdefault(randnums, 1)keys = sorted(nums.keys())for i in keys:    print(‘{:<4} {:<4}‘.format(i, nums[i]))




0x 09 字典的使用(三)

"""字串重複統計    字元表‘abcdefghijklmnopqrstuvwxyz‘    隨機挑選2個字母組成字串,共挑選100個    降序輸出這100個字串及重複的次數"""import randomimport stringstrs = ‘abcdefghijklmnopqrstuvwxyz‘dic = {}for _ in range(100):    # randstr = ‘‘.join(random.sample(strs, 2))    randstr = "".join(random.choice(strs) for _ in range(0, 2))   #三種輸出2個隨機字元的方式    # randstr = ‘‘.join(random.sample(string.ascii_lowercase, 2))    if randstr not in dic:        dic.setdefault(randstr, 1)    else:        dic[randstr] += 1sortstr = sorted(dic.keys())   #升序#sortstr = sorted(dic.keys(),reverse=True)  #降序for i in sortstr:    print(‘{:<4} {:<4}‘.format(i, dic[i]))"""Data    #string模組的一些常用字串對象          __all__ = [‘ascii_letters‘, ‘ascii_lowercase‘, ‘ascii_uppercase‘, ‘capwords‘, ‘digits‘, ‘hexdigits‘, ‘octdigits‘, ‘printable‘, ‘punctuation‘, ‘whitespace‘, ‘Formatter‘, ‘Template‘]ascii_letters = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘ascii_lowercase = ‘abcdefghijklmnopqrstuvwxyz‘ascii_uppercase = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘digits = ‘0123456789‘hexdigits = ‘0123456789abcdefABCDEF‘octdigits = ‘01234567‘printable = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\‘()*+,-./:;<=>[email protected][\\]^_`{|}~ \t\n\r\x0b\x0c‘punctuation = ‘!"#$%&\‘()*+,-./:;<=>[email protected][\\]^_`{|}~‘whitespace = ‘ \t\n\r\x0b\x0c‘"""





Python資料結構(一) 字典

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.