字典类型及操作

映射: 是一种建(索引)和值(数据)的对应
采用{}和dict()创建,键值对用:表示
d = {‘中国’:‘北京’, ‘美国’:‘华盛顿’,‘法国’:‘巴黎’}
索引时:d[‘中国’]
‘北京’
空字典:{}
空集合:set()

del d[k]: 删除键k对应的数据值
k in d: 判断键k是否在字典中
d.keys() :返回字典中所有的键信息,但是不是一个列表类型,是一种字典的k类型
d.values(): 返回字典中所有的值信息,是字典的value类型
dict_values([‘北京’, ‘华盛顿’, ‘巴黎’])
d.items(): 返回字典中所有键值对的信息

d.get(k, ): 键k存在,则返回相应值,不存在就返回default的值
d.pop(k,default) : 键k存在,则取出相应值,
d.popitem(): 随机从字典d中取出一个键值对,以元组形式返回
d.clear(): 删除所有的键值对
len(d): 返回字典d中元素的个数

主要作用:
用恰当的一组键值表达之间的关系

#对文本进行降噪处理
def gettext():
    with open('hamlet.txt','r') as f:
        txt = f.read()
        txt = txt.lower() #降噪处理,先将大写变小写
        #将特殊符号用空格替换掉
        for ch in '!@#$%^&*0|~:;<>=':
            txt = txt.replace(ch, '')
        return txt
hamlettxt = gettext()
words = hamlettxt.split() #默认以空格方式进行分隔,并且返回一个列表
counts = {}#创建一个新字典,获得词频

#两行代码实现词频统计
for word in words:
    counts[word] = counts.get(word, 0)+1  #以当前的某个英文单词作为键值,对其次数进行索引
#讲字典变为列表
items = list(counts.items())  #列表里的每个元素是以元组的形式存在的
#对列表内元素进行排序
items.sort(key=lambda x:x[1],reverse=True)#按照x值的第二个及键值由大到小进行排序
for i in range(10):
    word, count = items[i]
    print('{0}:{1}'.format(word, count), end =' ')

中文三国演义

import jieba
with open('三国演义.txt', 'r') as f:
	txt = f.read()
words = jieba.lcut(txt)
counts = {}
for word in words:
	if len(word) == 1:
		continue
	else:
		counts[word] = counts.get(word, 0)+1
items = list(counts.items())  #将字典中所有的键值对(元素)取出,再转换为列表的格式
items.sort(key=lambda x:x[1], reverse = True)
for i in range(15):
	word, count = items[i]
	print('{0}:{1}'.format(word, count), end = ' ')

将与人物姓名无关的词进行排除

import jieba
with open('三国演义.txt', 'r') as f:
	txt = f.read()
words = jieba.lcut(txt)
excludes = {'历史','三国演义','人物','性格','赤壁之战','评价'}
counts = {}
for word in words:
	if len(word) == 1:
		continue
	elif word == '诸葛亮' or word == '孔明曰':
		reword = '孔明'
	else:
		reword = word
		counts[reword] = counts.get(reword, 0)+1
for word in excludes:
	del counts[word]
items = list(counts.items())  #将字典中所有的键值对(元素)取出,再转换为列表的格式
items.sort(key=lambda x:x[1], reverse = True)
for i in range(15):
	word, count = items[i]
	print('{0}:{1}'.format(word, count), end = ' ')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值