Python 基礎起步 (八) 字典實用技巧大全,申精幹貨,必看!

Hello ,同爲小白的朋友們你們好,這期主要爲你們帶來有關字典的一些實用技巧。上篇筆記經過感人肺腑的老白讓你們認識到了字典這麼有用的數據類型,這一期讓咱們看看如何能更好的操做字典。編程

基礎篇

下面我給你們來一個簡單的字典方法彙總,誠意滿滿,但願你們喜歡,若是有錯誤或者遺漏但願大神能夠補上~函數

建立字典,獲得字典中的鍵值,新增,修改,刪除,清空字典
stocks ={'IBM':146,            # 建立字典
         'MSFT':44,
         'MAOTAI':1000}

stocks['IBM']                  # 查詢字典中的一個值  Out:146
stocks.get('MSFT')             # 查詢字典中的一個值  Out:44
stocks.get('a','Not found')    # 查詢字典中的一個值,若是沒有,返回 Not found
stocks['a']                    # 拋出錯誤,由於字典中沒有這個值
stocks['IBM']=200              # 修改值
stocks['APPLE']=400            # 新增鍵和值
stocks.update({'APPLE':900,
               'MAOTAI':0,
               'MSFT':250})    # 一次修改多個值

del stocks['APPLE']            # 刪除一個值
stocks.pop['MAOTAI']           # 刪除並返回刪除的值
stocks.keys()                  # 得到字典的全部鍵
stocks.values()                # 得到字典的全部值
stocks.items()                 # 得到字典的全部鍵和值,形式爲 (key,value)

for k,v in stocks.items():     # 遍歷一個字典,輸出它的鍵和值
    print(k,v)                          

stocks.clear()                 #清空一個字典,讓字典爲空
del stocks                     #直接刪除一個字典

好啦,基礎方法就這麼多大概,這裏建立了一個stocks字典用來表示股票名稱和價錢,而後在基礎上舉例子的,有兩點須要你們注意:code

  • 一次更新多個值的時候用update()方法會很方便
  • 若是利用dict[key]的方式獲取一個字典中不存在的值會報錯,正確作法是用get()函數,效果好不少

奇淫巧技篇

建立字典歪門邪道之一: list + zip

除了常規的方式,還有不少其餘方式能夠幫助咱們建立一個字典,好比咱們這裏想要建立一個字典來表示一個學生的各科成績:orm

subject=['Math','Chinese','English','Science','Art']
marks=[80,78,96,60,75]

final_result=dict(zip(subject,marks))
print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])

這裏其實很容易看懂,咱們把subject的全部值做爲key值,把marks全部值當作values的值,最後用Python很常見的zip就啪啪啪的將他們合併啦,造成了一個新的字典final_result排序

建立字典歪門邪道之二: 利用等號

上面的字典還能夠經過這種形式來建立;ip

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])
字典排序: 根據鍵值Key排序

仍是使用上面已經建好的字典 final_result,咱們先根據字典中的鍵值來排序:ci

print(sorted(final_result.items())) # 自動根據鍵的值從小到大或者按照A-Z排序
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

換一種方式:get

import operator
print(sorted(final_result.items(),key=operator.itemgetter(0)))
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

或者用lamba函數秀一波:it

print(sorted(final_result.items(),key=lambda x:x[0]))
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

不要問我爲何,我也在學,可是我深知在Python編程裝逼界你不用幾個lamba,reduce什麼的都很差意思和人打招呼,哈哈event

若是咱們想要實現根據鍵值倒序也很簡單:

print(sorted(final_result.items(),reverse=True))
Out:[('Science', 60), ('Math', 80), ('English', 96), ('Chinese', 78), ('Art', 75)]
字典排序: 根據Value值排序

其實你們看到了根據key的排序,也猜到了如何根據value 排序:

print(sorted(final_result.items(),key=lambda x:x[1])) #根據分數排序,從低到高
Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

或者換一種方式:

import operator
print(sorted(final_result.items(),key=operator.itemgetter(1)))

Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

倒序也是相似:

print(sorted(final_result.items(),key=lambda kv:kv[1],reverse=True))
Out:[('English', 96), ('Math', 80), ('Chinese', 78), ('Art', 75), ('Science', 60)]

這裏我在lamba後面沒有寫x,寫了一個kv,就是告訴你們這裏是什麼不過重要,先這麼理解就行

獲取字典的子集

咱們將會一直使用上面的final_result字典來示範,這裏若是咱們想要獲得這個學生成績大於70分的字典子集應該怎麼作呢,很簡單:

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
above_seventy ={subject:mark for subject,mark in final_result.items() if mark >70}
print(above_seventy.items())

Out:dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Art', 75)])
交換字典中的key和value的值

這個小技巧能夠這樣實現:

exchange_key_value= dict(zip(final_result.values(),final_result.keys()))
print(exchange_key_value.items())

Out: dict_items([(80, 'Math'), (78, 'Chinese'), (96, 'English'), (60, 'Science'), (75, 'Art')])
獲取字典最大值最小值

簡直不要太簡單呀:

print("The best mark is {}".format(max(final_result.values())))
print("The worst mark is {}".format(min(final_result.values())))

Out: The best mark is 96
     The worst mark is 60

總結

沒啥可說的啦,寫了這麼多,求老鐵們雙擊666鼓勵一波!!!!完結,撒花~

相關文章
相關標籤/搜索