字典
1.创建字典
使用{}创建字典
使用:指明 键:值 对
使用逗号(,)分隔每对键值
my_dict={'John':45612,'Bob':454}
- 键必须是不可变的且不重复,只可以是任意类型
2.访问字典
使用[]运算符,键作为索引
print my_dict['Bob']
增加一个新的对
my_dict['Tom']=6565
- 在字典里键值对是无序的
3.字典运算符和方法
- len()
字典中键—值对的数量
len(my_dict)
- in
快速判断key是否为字典中的键:O(1)
- 等价于my_dict.has.key(key)
- for ··· in my_dict
枚举字典中的键,仍然是无序的 - 枚举字典中的键-对
for word,freq in my dict.items():
pass
- my_dict.items()
返回全部的键-值对:以列表的形式
每一个元素是一个元组 - my_dict.keys()
返回全部的键:以列表的形式 - my_dict.values()
返回全部的值:以列表的形式 - 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