【《流畅的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.mzph.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; 存储单个键…