11个好用到起飞的「Python字典」知识点!
? 人生苦短,快學Python!
關于Python字典,算是Python中相當重要的數據類型了。在你學會基礎知識后,字典這個概念,將會伴隨著你后面的學習和工作。
因此,這里有幾個相當重要的知識點,大家有必要知道。
字典是否是無序的
關于這個概念,很多朋友不一定清楚。
在 Python 2.7 中,字典是無序結構。字典項目的順序是混亂的。這意味著項目的順序是確定性和可重復的。
>>>?#?Python?2.7 >>>?a_dict?=?{'color':?'blue',?'fruit':?'apple',?'pet':?'dog'} >>>?a_dict {'color':?'blue',?'pet':?'dog',?'fruit':?'apple'} >>>?a_dict {'color':?'blue',?'pet':?'dog',?'fruit':?'apple'}在 Python 3.5 中,字典仍然是無序的,但這次是隨機的數據結構。這意味著每次重新運行字典時,您都會得到不同的項目順序。
>>>?#?Python?3.5 >>>?a_dict?=?{'color':?'blue',?'fruit':?'apple',?'pet':?'dog'} >>>?a_dict {'color':?'blue',?'pet':?'dog',?'fruit':?'apple'} >>>?a_dict {'color':?'blue',?'pet':?'dog',?'fruit':?'apple'}在 Python 3.6 及更高版本中,字典是有序的數據結構,這意味著它們保持元素的順序與它們被引入時的順序相同。
>>>?a_dict?=?{'color':?'blue',?'fruit':?'apple',?'pet':?'dog'} >>>?a_dict {'color':?'blue',?'fruit':?'apple',?'pet':?'dog'} >>>?a_dict {'color':?'blue',?'fruit':?'apple',?'pet':?'dog'}鍵值互換
假設您有一本字典,由于某種原因需要將鍵轉換為值,值轉換為鍵,應該怎么做呢?
>>>?a_dict?=?{'one':?1,?'two':?2,?'thee':?3,?'four':?4} >>>?new_dict?=?{} >>>?for?key,?value?in?a_dict.items(): ...?????new_dict[value]?=?key ... >>>?new_dict {1:?'one',?2:?'two',?3:?'thee',?4:?'four'}依據某種條件,過濾字典
有時候,你需要根據某種條件來過濾字典。那么配合if條件語句,是一個很好的選擇。
>>>?a_dict?=?{'one':?1,?'two':?2,?'thee':?3,?'four':?4} >>>?new_dict?=?{}??#?Create?a?new?empty?dictionary >>>?for?key,?value?in?a_dict.items(): ...?????if?value?<=?2: ...?????????new_dict[key]?=?value ... >>>?new_dict {'one':?1,?'two':?2}利用字典中的值,做一些計算
在Python中遍歷字典時。需要進行一些計算也是很常見的。假設您已將公司銷售額的數據存儲在字典中,現在您想知道一年的總收入。
>>>?incomes?=?{'apple':?5600.00,?'orange':?3500.00,?'banana':?5000.00} >>>?total_income?=?0.00 >>>?for?value?in?incomes.values(): ...?????total_income?+=?value??#?Accumulate?the?values?in?total_income ... >>>?total_income 14100.0字典推導式
字典推導式,是一個和列表推導式一樣,具有很強大功能的知識點。因此,大家一定要掌握。
例如,假設您有兩個數據列表,您需要根據它們創建一個新字典。
>>>?objects?=?['blue',?'apple',?'dog'] >>>?categories?=?['color',?'fruit',?'pet'] >>>?a_dict?=?{key:?value?for?key,?value?in?zip(categories,?objects)} >>>?a_dict {'color':?'blue',?'fruit':?'apple',?'pet':?'dog'}利用字典推導式,實現鍵值轉換
你會發現,使用字典推導式,是一個更簡單、高效的操作。
>>>?a_dict?=?{'one':?1,?'two':?2,?'thee':?3,?'four':?4} >>>?new_dict?=?{value:?key?for?key,?value?in?a_dict.items()} >>>?new_dict {1:?'one',?2:?'two',?3:?'thee',?4:?'four'}利用字典推導式,過濾字典
>>>?a_dict?=?{'one':?1,?'two':?2,?'thee':?3,?'four':?4} >>>?new_dict?=?{k:?v?for?k,?v?in?a_dict.items()?if?v?<=?2} >>>?new_dict {'one':?1,?'two':?2}利用字典推導式,做一些計算
>>>?incomes?=?{'apple':?5600.00,?'orange':?3500.00,?'banana':?5000.00} >>>?total_income?=?sum([value?for?value?in?incomes.values()]) >>>?total_income 14100.0字典排序
從 Python 3.6 開始,字典是有序的數據結構,因此如果您使用 Python 3.6(及更高版本),您將能夠通過使用sorted()并借助字典理解對任何字典的鍵,進行排序。
>>?incomes?=?{'apple':?5600.00,?'orange':?3500.00,?'banana':?5000.00} >>>?sorted_income?=?{k:?incomes[k]?for?k?in?sorted(incomes)} >>>?sorted_income {'apple':?5600.0,?'banana':?5000.0,?'orange':?3500.0}內置函數,與字典配合使用
Python 提供了一些內置函數,這些函數在您處理集合(如字典)時可能會很有用。
map()函數
假設您有一個包含一堆產品價格的字典,并且您需要對它們應用折扣。
>>>?prices?=?{'apple':?0.40,?'orange':?0.35,?'banana':?0.25} >>>?def?discount(current_price): ...?????return?(current_price[0],?round(current_price[1]?*?0.95,?2)) ... >>>?new_prices?=?dict(map(discount,?prices.items())) >>>?new_prices {'apple':?0.38,?'orange':?0.33,?'banana':?0.24}filter()函數
假設您想知道單價低于0.40的產品。
>>>?prices?=?{'apple':?0.40,?'orange':?0.35,?'banana':?0.25} >>>?def?has_low_price(price): ...?????return?prices[price]?<?0.4 ... >>>?low_price?=?list(filter(has_low_price,?prices.keys())) >>>?low_price ['orange',?'banana']字典解包運算符
這是很多人不清楚的概念,Python 3.5 帶來了一個有趣的新特性,因此大家需要著重學習。
您可以使用字典解包運算符 ( **) 將兩個字典合并為一個新字典。
>>>?vegetable_prices?=?{'pepper':?0.20,?'onion':?0.55} >>>?fruit_prices?=?{'apple':?0.40,?'orange':?0.35,?'pepper':?.25} >>>?{**vegetable_prices,?**fruit_prices} {'pepper':?0.25,?'onion':?0.55,?'apple':?0.4,?'orange':?0.35}如果您嘗試合并的字典,具有重復或公共鍵,則最右側字典的值將補充上。
E?N?D
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的11个好用到起飞的「Python字典」知识点!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己动手写了个 Web 框架,我膨胀了
- 下一篇: 国内Python最有钱途的方向,开发第二