【Python学习笔记】Coursera课程《Python Data Structures》 密歇根大学 Charles Severance——Week5 Dictionary课堂笔记...-程序员宅基地

技术标签: python  

Coursera课程《Python Data Structures》 密歇根大学 Charles Severance

Week5 Dictionary

9.1 Dictionaries

字典就像是一个包,而这个包里的每样东西都整整齐齐地贴好了标签,于是我们可以通过标签来找到我们想要的东西。而且注意,字典这个包是无序的,所以它不能根据顺序索引,只能根据标签。

>>> purse = dict()
>>> purse['money'] = 12
>>> purse['candy'] = 3
>>> purse['tissues'] = 75
>>> print(purse)
{'money':12, 'tissues':75, 'candy':3}
>>> print(purse['candy'])
3
>>> purse['candy'] = purse['candy'] + 2
>>> print(purse)
{'money':12, 'tissues':75, 'candy': 5}

9.2 Counting with Dictionaries

我们可以使用"in"来查看,是否某个key在这个字典里。

>>> ccc = dict()
>>> print(ccc['csev'])
Traceback (most recent call last):
    File "<stdin", line 1, in <module>
KeyError: 'csev'
>>> 'csev' in ccc
False

字典的get()方法是查看是否一个key已经在字典里,如果没有在的话,那就新建一个key,把它附上默认值。

比如下面这两段代码,其实功能是一样的。

if name in counts:
    x = counts[name]
else:
    x = 0
 x = counts.get(name, 0)

所以使用get()来计数的话会更加方便。

counts = dict()
names = ['csev', 'cwen', 'csev', 'zqian', 'cwen']
for name in names:
    counts[name] = counts.get(name, 0) + 1
print(counts)

输出结果就是

{'csev':2,'zqian':1,'cwen':2}

9.3 Dictionaries and Files

计数的一个基本模式是这样的。

counts = dict()
print('Enter a line of text:')
line = input('')

words = line.split()

print('Words:', words)

print('Counting...')
for word in words:
    counts[word] = counts.get(word, 0) + 1
print('Counts', counts)

我们可以使用keys(), values(), items()这些方法来分别获得字典的key,值或者全部

>>> jjj = {'chuck':1, 'fred':42, 'jan':100}
>>> print(list(jjj))
['jan', 'chuck', 'fred']
>>> print(jjj.keys())
['jan', 'chuck', 'fred']
>>> print(jjj.values())
[100, 1, 42]
>>> print(jjj.items())
[('jan', 100), ('chuck', 1), ('fred', 42)]

我们还可以使用两个循环变量同时对key和value进行循环。

jjj = {'chuck':1, 'fred':42, 'jan': 100}
for aaa,bbb in jjj.item():
    print(aaa,bbb)

那么接下来我们就可以读取文件,来对里面的文本进行计数了。

name = input('Enter file:')
handle = open(name)

counts = dict()
for line in handle:
    words = line.split()
    for word in words:
        counts[word] = counts.get(word, 0) + 1
        
bigcount = None
bigword = None
for word, count in counts.items():
    if bigcount is None or count > bigcount:
        bigword = word
        bigcount = count

print(bigword, bigcount)

9.4 Assignment

作业的代码如下

name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)

counts = dict()
for line in handle:
    words = line.split()
    if len(words) < 1 or words[0] != 'From':
        continue
    counts[words[1]] = counts.get(words[1], 0) + 1
    
bigcount = None
bigword = None
for word, count in counts.items():
    if bigcount is None or count > bigcount:
        bigword = word
        bigcount = count

print(bigword, bigcount)

转载于:https://www.cnblogs.com/IvyWong/p/9558795.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30482181/article/details/99777828

智能推荐

android agentweb进度,AgentWeb-Android-H5混合开发-程序员宅基地

文章浏览阅读301次。简介agentweb 是对webview进行的又一层封装较为轻量级所以基本的开发流程大致和webview原理相似将html5文件方入asset文件夹下,访问路径为final private String CoachFile = "file:///android_asset/teacher/info-teacher.html";运行demo此demo使用了bintray/Jcenter 这个东西Jc..._agentweb token

【Phone ECC】紧急号码的管理及客制化方法_sim卡 ecclist-程序员宅基地

文章浏览阅读614次。[Android Version]Android 5.0/5.1 (L)Android 6.0 (M)Android 7.0(N)Android 8.0(O)[DESCRIPTION]L及之后的版本紧急号码Customer的部分改成了在XML文件中来配置,文件的路径: alps\vendor\mediatek\proprietary\external\EccL..._sim卡 ecclist

BCrypt 加密实现_写一个bcrypt-程序员宅基地

文章浏览阅读1.1k次。Bcrypt百度百科:1、 bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。2、bcrypt算法相对来说是运算比较慢的算法,在密码学界有句常话:越慢的算法越安全。算法越算,黑客破解成本越高.通过salt和const这两个值来减缓加密过程,ta的加密时间(百ms级)远远超过md5(大概1..._写一个bcrypt

LaTeX中的中英文字体设置、混排_latex英文字体-程序员宅基地

文章浏览阅读2.4w次,点赞14次,收藏87次。LaTeX中英文字体设置、混排,ctex宏包引用_latex英文字体

uni-app 消息推送功能UniPush_uniapp消息推送功能-程序员宅基地

文章浏览阅读5.7k次,点赞2次,收藏20次。这里用的是uni-app自带的UniPush1.0(个推服务),所以只针对UniPush1.0介绍实现步骤。当然现在已经出了UniPush2.0(HBuilderX 3.5.1及其以上版本支持),新项目的话还是推荐使用UniPush2.0。如果要使用UniPush2.0,请移步 UniPush 2.0 使用指南。_uniapp消息推送功能

sort与sorted的区别_sort和sorted函数的区别-程序员宅基地

文章浏览阅读1.3w次,点赞41次,收藏217次。一、sort()sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数原型:sort(key,reverse=False)key:用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你的序列进行排序;reverse:是用来表明是否逆序,默认的False情况下是按照升序的规则进行排序的,当reverse=True时,便会按照降序进行排序。例如:1、list=[2,24,8,6,35,7,22,30]list.sort()pri_sort和sorted函数的区别

随便推点

java财务对账系统设计_对账系统设计-程序员宅基地

文章浏览阅读1.4k次。更多支付内容请移步个人站:YKBLog.top对账整体设计从整体来看,按照时序维度的先后,系统对账主要分为三阶段的工作。分别是数据准备、数据核对和差错处理。数据准备细分一下,又分为文件获取、文件解析、数据清洗。在对账专业概念中,数据核对和差错处理又叫轧账和平账。具体设计脑图如下:check-arch.png对账各个模块设计数据准备数据准备,顾名思义,我们需要把对账所需的全部数据,接入到我们的对账系..._java 对账实战思路

Python新姿势:用魔法方法玩转对象-程序员宅基地

文章浏览阅读887次,点赞23次,收藏17次。Python中魔法方法(magic method)其实就是那些被双下划线包围的方法,比如__init____str__等等。这些魔法方法为类添加了**“魔力”,让我们可以在面向对象编程中用更加简洁的代码来操作对象。本篇根据面向对象编程的一些场景来介绍常用的魔法方法**。Python的魔法方法很多,本文只是列举了其中很少的一部分,github上有一个示例python。

小程序云开发 上传图片到云存储_微信小程序上传图片到云存储-程序员宅基地

文章浏览阅读9.4k次,点赞20次,收藏102次。在学习了小程序云开发后,遇到了开发中常见的图片上传,今天简单的记录总结下在云开发中如何实现图片上传到云存储中。_微信小程序上传图片到云存储

ftp服务器上传文件频率,ftp服务器上传文件速度多少-程序员宅基地

文章浏览阅读1k次。ftp服务器上传文件速度多少 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。使用FTP上传文件时,写入失败,文件传输失败。该文档适用于Windows系统上的FTP服务。FTP服务端在NAT环境下,客户端需使用被动模式连接服务端。在这种情况下,服务端的IP地址无法从路由器外部访问,所以..._c# ftp上传速度默认多少

简单理解磁盘结构-程序员宅基地

文章浏览阅读3.6w次,点赞126次,收藏373次。    偶然看到一道笔试题,所以简单整理了一下磁盘的结构。本文主要介绍传统的磁盘结构,包括盘面、磁道、扇区、柱面、读写数据过程的概念,最后给出所遇到的笔试题。磁盘结构    传统的硬盘盘结构是像下图样子的,它有一个或多个盘片,用于存储数据,盘片多采用铝合金材料;中间有一个主轴,所有的盘片都绕着这个主轴转动,一个组合臂上面有多个磁头臂,每个磁头臂上面都有一个磁头,负责读写数据。..._磁盘结构

python数组(list) 求交集、并集、差集_python计算四个数组的交集代码-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏16次。两个集合: a = [1,2,3,4,5,6] b = [3,5,7]1.求交集 方式一: intersection = [i for i in a if i in b] intersection = list(set(a).intersection(set(b))) 结果: [3, 5]2.求并集 union= list(set(a).u..._python计算四个数组的交集代码

推荐文章

热门文章

相关标签