python中collection.defaultdict()使用方法

导入我将用到的库
import re
import sys
import collections

defaultdict是映射字典的其中一种,使用这中映射方法构造字典,要调用collections库

collections.defaultdict:当查询字典里的某个键不存在时,创建这个键,并给这个键提供一个方法来设定默认值

如 dict1 = collections.defaultdict(list) ,如果在查询key值时没有发现key,就创建这个key并且用list()创建一个空列表作为key的默认值

通过一个实用实例来说明defaultdict的实际用法:

查看文件中各个单词出现的频率,并统计其出现位置:

word_re = re.compile(r'\w+')			# 正则定义搜索规则
index = collections.defaultdict(list)  	  # 定义index字典中给不存在的key赋值的方法为创建一个空列表作为默认值
with open(sys.argv[1], encoding='utf-8') as fp:  		#打开运行脚本时的指定文件,编码格式‘utf-8’,将内容命名为fp
    for line_num, content in enumerate(fp, 1): 	    #将文件内容利用enumerate()转换成(索引, 内容)格式的索引序列,并分别抽取他的行数及行对应的内容
        for match in word_re.finditer(content):		# 返回正则匹配的(content)内容的迭代器对象赋值给match
            word = match.group()		  # 翻译match的迭代器的内容并保存在一个分组里,.group() 正则匹配对象分组储存
            column_num = match.start()+1	     # 获取匹配单词出现的真实位置(索引+1),此位置为单词首字母出现的索引位置
            location = (line_num, column_num)	     # line_num 锁定单词出现的行,column_num 锁定单词出现在此行的位置。
            index[word].append(location)        # 直接调用字典查询键值,并将location追加给当前查询key即可

for word in sorted(index, key=str.lower):		  #输出
    print(word, index[word])

本文章为学习笔记,仅用于学习和交流,内容来源:《流畅的python》

你可能感兴趣的:(python)