7.10 字典与集合

字典

1.创建字典

使用{}创建字典
使用:指明 键:值 对
使用逗号(,)分隔每对键值

my_dict={'John':45612,'Bob':454}
  • 键必须是不可变的且不重复,只可以是任意类型

2.访问字典

使用[]运算符,键作为索引

print my_dict['Bob']

增加一个新的对

my_dict['Tom']=6565
  • 在字典里键值对是无序的

3.字典运算符和方法

  1. len()
    字典中键—值对的数量
len(my_dict)
  1. in
    快速判断key是否为字典中的键:O(1)
  • 等价于my_dict.has.key(key)
  1. for ··· in my_dict
    枚举字典中的键,仍然是无序的
  2. 枚举字典中的键-对
for word,freq in my dict.items():
	pass
  1. my_dict.items()
    返回全部的键-值对:以列表的形式
    每一个元素是一个元组
  2. my_dict.keys()
    返回全部的键:以列表的形式
  3. my_dict.values()
    返回全部的值:以列表的形式
  4. my_dict.clear()
    清空字典

4.翻转字典

以原来的值作为键,以原来的键作为值

  • 一个值可能对应多个键
  • 用列表来存储原来多个键
    建立字典的值列表:强制爱
d1={'Zhang':123,'Wang':456,'Li':123}
d2={}

for name,room in d1.items():
	if room in d2:
		d2[room[.append(name)
	else:
		d2[room]=[name]
print d2

集合

1.定义:无序不重复元素(键)集,和字典类似,但是无‘值’
2.创建

1. x=set()2. x={key1,key2,```}

3.添加

x.add('body')

4.删除

x.remove('body')

5.集合的运算符
在这里插入图片描述

中文分词

1.加载词典,返回词典集合与最长的那次的长度

def load_dic(filename):#filename:文件名
	f=open(filename)
	word_dic=set()
	max_length=1
	for line in f:#其中每一行存在这每一个单词
	word=unicode(line.strip(),'uth-8')#读入的字典以utf-8格式存储
	#使用unicode将utf-8存储的单词转化为unicode存储:长度固定
		word_dic.add(word)
		if len(word)>max_length:
			max_length=len(word)
	return max_length,word_dic
def fmm_word_seg(sent,max_len,word_dict):#sent:句子
	begin()=0
	words=[]#存储最终分出来的词
	#假设输入句子仍然是utf-8格式
	sent=unicode(sent,'utf-8')
	while begin<len(sent):
		for end in range(begin+max_len,begin-1):
			if sent[begin:end] in word_dict:
				words.append(sent[begin:end])
				break
		begin=end
	return words
	
max-len,word_dict=load_dict('lexicon.dic')
sent=raw_input('Input a sentence:')
words= fmm_word_seg(sent,max_len,word_dict)
for word in words:
	print word
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值