python学习2019/05/25

字典类型及操作

映射
映射是一种键(索引)与值(数据)的对应关系
映射类型就是由用户自定义索引的数据类型
字典类型是映射的体现
键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序
采用大括号 {}或者dict()创建,
键值对用:表示

字典类型操作函数和方法

del d[k]
删除字典d中键k对应的数据值
k in d
判断键k是否在字典d中,
如果在返回True,否则False
d.keys()
返回字典k中所有的键信息
d.values()
返回字典d中所有的值信息
d.item()
返回字典d中所有的键值对信息
d.get(k,)
键k存在,则返回对应值,不在则返回《default》值
d.pop(k,)
键k存在,则取出(删除)对应值,不在则返回《default》值
d.popitem()
随机从字典d中取出一个键值对,以元组形式返回
d.clear()
删除所有的键值对
len(d)
返回字典中元素的个数

新增键值对元素
d【‘a’】= 1
d【‘b’】= 2
修改键值对元素
d【‘b’】 = 3

d = {‘中国’:‘北京’,‘法国’:‘巴黎’,‘美国’:‘华盛顿’}
print(d[‘中国’]) #返回数据类型
#输出‘北京’
de = {};type(de)
#dict
#空的字典类型
print(‘法国’ in d)#True
print(‘巴黎’ in d)#False
print(d.keys())
#dict_keys([‘中国’, ‘法国’, ‘美国’])
print(d.values())
#dict_values([‘北京’, ‘巴黎’, ‘华盛顿’])
print(d.items())
#dict_items([(‘中国’, ‘北京’), (‘法国’, ‘巴黎’), (‘美国’, ‘华盛顿’)])
#del d[‘法国’] ,删除法国键值对
print(d.get(‘法国’,‘错误’))
print(d.get(‘ss’,‘错误’))
#输出
#巴黎
#错误
#d.pop(‘法国’,‘错误’)
#删除‘法国’,键值对,否则返回错误
#d.pop(‘法国1’,‘错误’)
#没有法国1,返回错误
#d.popitem()
#随机从字典d中取出一个键值对,以元组形式返回
#d.clear()
#删除d中所有的键值对
print(len(d))
#3

jieba库的使用

jieba.lcuts()
精确模式,返回一个列表类型的分词结果
#jieba.lcuts(‘中国是一个伟大的国家’)
【中国,是,一个,伟大,的,国家】

全模式,存在冗余
jieba.lcut(‘中国是一个伟大的国家’,cut_all=True )
[中国,国是,一个,伟大,的,国家]

搜索引擎模式,存在冗余
jieba.lcut_for_search(s)
s=(“中华人民共和国是伟大的”)
【中华,华人,人民,共和,共和国,中华人民共和国,是,伟大,的】

增加词库
jieba.add_word(w)
向分词词典增加新词w
w=(‘蟒蛇语言‘)

文本词频统计

sort()
list.sort( key=None, reverse=False)
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

hamletTxt = getText()
#对文件进行读取并进行规划
words = hamletTxt.split()
#默认用空格对字符串进行分隔,并用列表形式返回变量
counts = {}
#创建一个字典counts
for word in words:
#word遍历words
counts[word] = counts.get(word,0) + 1
#字典word = get counts次数+1,否则返回0
items = list(counts.items())
#创建列表items,返回所有键值对信息
items.sort(key=lambda x:x[1],reverse=True)
#sort方法进行排序,用key=lambda方法排序,匿名函数,x:x[1]
for i in range(10):
#遍历i前10个出现最多的单词
word,counts = items[i]
#次数
print(’{0:<10}{1:>5}’.format(word,counts))

import jieba
txt = open(‘threekingdoms.txt’,‘r’,encoding=‘utf-8’).read()
excludes = {‘将军’,‘却说’,‘荆州’,‘二人’,‘不可’,‘不能’,‘如此’}
#需要排除的关键词
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == ‘诸葛亮’ or word ==‘孔明曰’:
rword == ‘孔明’
elif word == ‘关公’ or word == ‘云长’:
rword == ‘关羽’
elif word == ‘玄德’ or word == ‘玄德曰’:
rword == ‘刘备’
elif word == ‘孟德’ or word == ‘丞相’:
rword == ‘曹操’
else:
rword = word
counts[word] = counts.get(word,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(10):
word,count = items[i]
print(’{0:<10}{0:>5}’.format(word,count))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值