【《流暢的python》3.2-3.3節學習筆記】

目錄

  • 前言
  • 字典推導
  • dict.setdefault
  • 總結

前言

本文為《流暢的python》的3.2-3.3節的學習筆記。

字典推導


DIAL_CODES = [(86, 'China'),(91, 'India'),(1, 'United States'),(62, 'Indonesia'),(55, 'Brazil'),(92, 'Pakistan'),(880, 'Bangladesh'),(234, 'Nigeria'),(7, 'Russia'),(81, 'Japan'),
]country_code = {country: codefor code, country in DIAL_CODES}
print(country_code)
>>>
{'China': 86, 'India': 91, 'United States': 1, 'Indonesia': 62, 'Brazil': 55, 'Pakistan': 92, 'Bangladesh': 880, 'Nigeria': 234, 'Russia': 7, 'Japan': 81}

說明:字典推導和列表推導,生成器推導寫法類似,使用{}包含key和value
本例中,DIAL_CODES為列表,用for循環得到每個元素,其類型為元組,用元組拆包的方法得到區域碼和國家名。
在字典推導時,以國家名為key,區域碼為value。


country_code1 = {code: country.upper()for country, code in country_code.items()if code < 66}
print(country_code1)
>>>
{1: 'UNITED STATES', 62: 'INDONESIA', 55: 'BRAZIL', 7: 'RUSSIA'}

說明:以上例生成的字典為base進行拆包,并過濾區域碼小于66的地區,推導新字典。

dict.setdefault


import sys
import reWORD_RE = re.compile(r'\w+')def get():index = {}with open('D:\\new 1.txt', encoding='utf-8') as fp:for line_no, line in enumerate(fp, 1):#match: the match objectfor match in WORD_RE.finditer(line):word = match.group()column_no = match.start() + 1location = (line_no, column_no)#occurrences: a list to include the location(type: turple)#if key=word is not in dict, occurrences is set to nulloccurrences = index.get(word, [])#1st search key#add the new valueoccurrences.append(location)index[word] = occurrences#2nd search key#print(occurrences)for word in sorted(index, key=str.upper):print(word, index[word])passif __name__ == '__main__':get()#setdefault()
>>>
0 [(4, 26), (4, 31)]
1 [(21, 16)]
2 [(20, 13), (21, 13)]
4 [(20, 16), (24, 9)]
5 [(24, 12)]
abs [(12, 21)]
bool [(12, 16)]
class [(3, 1)]
def [(4, 5), (7, 5), (9, 5), (11, 5), (13, 5), (17, 5)]
from [(1, 1)]
hypot [(1, 18), (10, 16)]
import [(1, 11)]
math [(1, 6)]
other [(13, 23), (14, 22), (15, 22)]
print [(23, 1)]
r [(8, 25), (8, 29)]
return [(8, 9), (10, 9), (12, 9), (16, 9), (18, 9)]
scalar [(17, 23), (18, 32), (18, 49)]
self [(4, 18), (5, 9), (6, 9), (7, 18), (8, 36), (8, 44), (9, 17), (10, 22), (10, 30), (11, 18), (12, 25), (13, 17), (14, 13), (15, 13), (17, 17), (18, 23), (18, 40)]
v1 [(20, 1), (23, 7)]
v2 [(21, 1), (23, 12)]
Vector [(3, 7), (8, 17), (16, 16), (18, 16), (20, 6), (21, 6), (24, 2)]
x [(4, 24), (5, 14), (5, 18), (8, 41), (10, 27), (14, 9), (14, 18), (14, 28), (16, 23), (18, 28)]
y [(4, 29), (6, 14), (6, 18), (8, 49), (10, 35), (15, 9), (15, 18), (15, 28), (16, 26), (18, 45)]
__abs__ [(9, 9)]
__add__ [(13, 9)]
__bool__ [(11, 9)]
__init__ [(4, 9)]
__mul__ [(17, 9)]
__repr__ [(7, 9)]

說明:本例是查詢所有字母數字字符串在文件里出現的位置。
字典key對應的value以occurrences表示,類型為列表,列表里每個位置以location表示,類型為元組。
occurrences = index.get(word, [])
使用get方法查詢字典index里是否有key為word,如果沒有則以[]作為默認值,這是第一次以key查詢字典。
occurrences.append(location)
index[word] = occurrences
在occurrences得到新值后,重新對字典key和value賦值,這是第二次以key查詢字典
以上三行可以通過dict.setdefault一行完成。


def setdefault():index = {}with open('D:\\new 1.txt', encoding='utf-8') as fp:for line_no, line in enumerate(fp, 1):#match: the match objectfor match in WORD_RE.finditer(line):word = match.group()column_no = match.start() + 1location = (line_no, column_no)index.setdefault(word,[]).append(location)for word in sorted(index, key=str.upper):print(word, index[word])pass

總結

本小節主要講字典的相關內容,字典推導和setdefault方法的運用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44816.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44816.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44816.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux命令: ssh的使用

ssh隧道連通aws亞馬遜云 ssh -D 7017 -i "/cygdrive/e/tbqapps2/cfg/*****.pem" adminec2-43-207-84-117.ap-northeast-1.compute.amazonaws.com ssh -o ServerAliveInterval30 -fN -D 8080 root39.105.185.11ssh -fN -D 7002 -i "D:\tbqapps2\cfg\******.pem&…

Oracle 23ai 中的重要新特性 VECTOR 數據類型

Oracle 23ai 中的 VECTOR 數據類型是 Oracle 數據庫在 AI 領域的一個重要新特性&#xff0c;它允許用戶以向量的形式存儲數據&#xff0c;并在這些向量的基礎上進行高效的搜索和分析。以下是對 Oracle 23ai VECTOR 數據類型的詳細解析&#xff1a; 參考官方文檔地址 https://d…

【Ubuntu-18.04.6 LTS (Bionic Beaver)】串口無法root登錄解決方案

root用戶無法再窗口登錄 用戶界面登錄提示 soory that didnot work 解決方案 GDM 配置 /etc/gdm3/custom.conf 中增加或刪除注釋 [security] AllowRoottrue重啟服務 service gdm restart確認 PAM 配置 GDM 使用 PAM 進行認證&#xff0c;可能 PAM 配置中限制了 root 登錄…

GitHub網頁打開慢的解決辦法

有時候看資料絮叨github網頁打不開&#xff0c;經百度后&#xff0c;發下下面的方法有效。 1&#xff09;獲取github官網ip 我們首先要獲取github官網的ip地址&#xff0c;方法就是打開cmd&#xff0c;然后ping 找到github的地址&#xff1a;20.205.243.166 2&#xff09;配…

體驗升級!貴州“森林之城”攜蘇州金龍新V系譜寫高端旅運新篇章

自今年出臺文旅“四免一多一減”方案以來&#xff0c;貴州省圍繞旅游資源&#xff0c;著力打造亮點&#xff0c;不斷提升產品供給水平&#xff0c;旅游市場持續火爆。近日&#xff0c;貴州森林之城旅運公司從蘇州金龍批量采購50座海格新V系豪華大巴&#xff0c;為貴州高端旅游市…

域名系統DNS的工作原理和服務搭建

文章目錄 域名解析和DNSDNS概念 DNS服務工作原理遞歸查詢迭代查詢遞歸和迭代的區別DNS緩存 DNS服務器的安裝whoisDNS軟件bind DNS主服務器實現1.在主配置文件中定義區域2.定義區域解析庫文件各種資源類型解析庫記錄定義項 3.配置識別區域庫文件4.重啟named服務啟用DNS客戶端緩存…

【EasyExcel】動態替換表頭內容并應用樣式

1.定義實體類 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ContentStyle; import com.alibaba.excel.metadata.BorderStyleEnum; import com.alibaba.excel.metadata.VerticalAlignmentEnum; import com.alibaba.excel.metadata.…

Java--static詳解

1.static靜態的意義&#xff0c;加在屬性面前就為靜態屬性&#xff1b;加在方法面前就為靜態方法 2.如圖&#xff0c;定義了一個靜態屬性age&#xff0c;一個非靜態屬性score&#xff1b; 輸出語句一共四句&#xff0c;其中第三句報錯&#xff0c;由于靜態和非靜態的區別&…

微氣象儀的工作原理

型號推薦&#xff1a;云境天合TH-WQX5】風力發電傳感器在風力發電系統中起著至關重要的作用&#xff0c;它們能夠實時監測和記錄各種關鍵參數&#xff0c;為風力發電機組的控制提供數據支持&#xff0c;從而確保風力發電系統的安全、高效運行。以下是對風力發電傳感器的詳細解析…

程序員有哪些職位?

互聯網行業中的崗位種類繁多、五花八門&#xff0c;學習一門技術后&#xff0c;重要的是找到合適的職業發展方向&#xff0c;程序員有哪些職業發展方向&#xff1f;一起來看看吧&#xff01; 1.架構師 架構師需要程序員有強大的技術實力和深厚的技術積累。建筑師的成長需要經…

使用Docker制作python項目鏡像

各docker桌面版本集合&#xff1a;如果提示新版本系統不支持&#xff0c;可下載舊版本 我也分享在下面。 鏈接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取碼: g7ky –來自百度網盤超級會員v2的分享 來源參考&#xff1a;https://zhuanlan.zhihu.com/p/65…

one-hot編碼案例

import jieba from tensorflow.keras.preprocessing.text import Tokenizer # 安裝了新版本的tensorflow # from keras.preprocessing.text import Tokenizer # 系統里面沒有按照新版本的tensorflow 直接使用keras# pytroch tensorflow1.xxxx (keras) # 導入用于對象保存與加…

uniapp 九宮格抽獎

<template><view class"container"><view class"navleft" click"navback"><image src"/static/cj/left.png" mode""></image></view><view class"navtitle">抽獎</…

SAP S4 銷售組的定義和分配

spro-企業結構-定義-銷售與分銷-維護銷售組 新增一個記錄 spro-企業結構-分配-銷售與分銷-給銷售辦公室分配銷售組

JavaScript-map方法

map可以遍歷數組處理數據&#xff0c;并返回新的數組 語法&#xff1a; ?const arr[元素1&#xff0c;元素2&#xff0c;元素3] const newarrarr.map(function(數組的元素,數組的索引)){return 新元素 } const arr[blue,red,green]const newarrarr.map(function(ele,index){co…

詳細介紹TS中的枚舉

在 TypeScript 中&#xff0c;枚舉&#xff08;Enums&#xff09;是一個用于表示常見常量集合的便利特性。枚舉是一種特殊的類型&#xff0c;它們允許你為一組值定義一個固定的命名空間。枚舉常用于模式匹配的 switch 語句和提供更可讀的類型檢查。 枚舉的基本語法&#xff1a…

應用案例 | 臺積電為保證光罩運輸質量選擇MSR沖擊振動記錄儀!內含臺積電工程師專訪

晶圓運輸需要注意什么&#xff1f; 晶圓運輸是半導體制造過程中極為關鍵和敏感的一環。在晶圓運輸過程中&#xff0c;需要注意以下幾點&#xff1a; 1.靜電防護 晶圓非常容易受到靜電的干擾&#xff0c;因此在運輸過程中需要遵守嚴格的靜電防護措施。使用適當的靜電防護包裝…

Bugly并非無所不能

在 iOS 應用因為內存占用過大而被系統 killed 的情況下&#xff0c;Bugly 以及大多數崩潰報告工具是無法捕獲到這種類型的崩潰信息的。原因在于&#xff0c;當系統由于內存壓力過大而終止應用時&#xff0c;是直接將應用進程殺死&#xff0c;不會觸發常規的崩潰處理流程&#x…

Blender 中導出模型fbx

準備模型&#xff1a;確保你的模型已經完成&#xff0c;并且所有的材質、紋理等都已設置好。 應用所有變換&#xff1a; 選擇模型&#xff0c;按下 CtrlA&#xff0c;選擇 "All Transforms" 以應用所有的變換&#xff08;位置、旋轉和縮放&#xff09;。 導出模型&a…

Java面試八股之Redis有哪些數據類型?底層實現分別是什么

Redis有哪些數據類型&#xff1f;底層實現分別是什么 Redis數據類型概述 Redis作為一款鍵值存儲系統&#xff0c;提供了豐富多樣的數據類型以滿足不同場景的需求。以下是Redis支持的主要數據類型及其基本用途&#xff1a; String&#xff08;字符串&#xff09; 存儲單個鍵…