云课堂-Python学习笔记(7)

一、字典

  1、什么是字典

    1、一系列键-值(key-value)对
    2、通过“键”查找对应的“值”
    3、类似纸质字典,通过单词索引表找到其对应的定义
      C++:map、Java:HashTable or HashMap
      例如:电话本

  2、创建字典

    使用{}创建字典

    使用:指明键:值对
      my_dict={‘John‘:86411234,‘Bob‘:24896880,‘Mike‘:354859977}

3、访问字典
使用[]运算符,键作为索引
增加一个新的对

1 my_dict={‘John‘:86411234,‘Bob‘:24896880,‘Mike‘:354859977}
2 print my_dict[‘John‘]
3 my_dict[‘Tom‘] = 9864433679
4 print my_dict

4、字典运算符和方法

1 len(my_dict):字典中键-值对的数量
2 key in my_dict:快速判断key是否为字典中的键:时间复杂度O(1)
3 等价于my_dict.has_key(key)
4 for key in my_dict:枚举字典中的键,注:键是无序的

更多方法:

1 my_dict.items():全部键-值对
2 my_dict.keys():全部键
3 my_dict.values():全部值
4 my_dict.clear():清空字典

  5、示例1:读取一个字符串,计算每个字母出现的个数

  方案一:生成26个变量,代表字母出现的个数

方案二:生成具有26个元素的列表,将每个字母转化为对象的索引值

1 s = ‘abdddeyyyrewgq‘
2 lst = [0]*26
3 for i in s :
4     lst[ord(i)-97] +=1
5
6 print lst

  方案三:生成一个字典,字母做键,对应出现的次数做值

s = raw_input()
d ={}
for i in s :
    if i in d:
        d[i] += 1
    else:
        d[i] = 1

print d

  示例2:读取小说emma.txt,打印前10个最常见的单词

 1 f= open(‘emma.txt‘)
 2 word_freq = {}
 3 for line in f:
 4     words = line.strip().split()
 5     for word in words:
 6         if word in word_freq:
 7             word_freq[word] += 1
 8         else:
 9             word_freq[word] = 1
10
11 freq_word = []
12 for word,freq in word_freq.items():
13     freq_word.append((freq,word))
14 freq_word.sort(reverse = True)
15
16 for freq,word in freq_word[:10]:
17     print word
18 f.close()

  示例3:翻转字典:生成一个新字典,其键为原来字典的值,值为原来字典的键

1 d1 = {‘zhang‘:123,‘wang‘:456,‘Li‘:123,‘zhao‘:456}
2 d2 = {}
3 for name,room in d1.items():
4     if room in d2:
5         d2[room].append(name)
6     else :
7         d2[room] = [name]
8 print d2

二、集合(set) 

  1、集合:无序不重复元素集,和字典类似,但是无值
  2、创建:
    x = set()
    x={key1,key2,....}
  3、添加和删除
    x.add(‘body‘
    x.remove(‘body‘)
  4、集合的运算符:
    -:差集
    &:交集
    |:并集
    !=:不等于
    ==:等于
    in:成员
    for key in set :枚举
  5、示例:中文分词
    我/爱/北京/天安门
    算法:正向最大匹配
      从左到右尽可能取长的词

 1 def load_dict(filename):
 2     word_dict = set()
 3     max_len = 1
 4     f = open(filename)
 5     for line in f:
 6         word = unicode(line.strip(),‘utf-8‘)
 7         word_dict.add(word)
 8         if len(word) > max_len:
 9             max_len = len(word)
10     return max_len,word_dict
11
12 def fmm_word_seg(sent,max_len,word_dict):
13     begin = 0
14     words = []
15     sent = unicode(sent,‘utf-8‘)
16
17     while begin < len(sent):
18         for end in range(begin + max_len,begin,-1):
19             if sent[begin:end] in word_dict:
20                 words.append(sent[begin:end])
21                 break
22             begin = end
23     return words
24 max_len,word_dict = load_dict(‘lexicon.dic‘)
25
26 sent = raw_input(‘Input a sententce:‘)
27 words = fmm_word_seg(sent,max_len,word_dict)
28 for word in words:
29     print word

时间: 2024-10-19 05:09:47

云课堂-Python学习笔记(7)的相关文章

云课堂-Python学习笔记(2)

一.对象和类型 1.五种基本数据类型: 1.字符串(String),简记为str,使用''或""括起来的一系列字符串 2.整数(integer),简记为int,十进制.八进制.十六进制 3.浮点数(float),例如1.48,  21.0,  21., .21,  21.E2 4.布尔数(boolean),简记为bool,True,False 5.复数(complex),1+1j 2.对象类型  小明 type('小明') <type 'str'>   男 type('男'

云课堂-Python学习笔记(5)

字符串定义 : 字符串(String)是一个字符的序列 使用成对的单引号或双引号括起来 one_quote_str = 'Hello World!' two_quote_str = "Hello World!" ?或者三引号("""或''') 保留字符串中的全部格式信息  '''   this  is a test today''' 基本的字符串运算 长度(len()函数) 1 first_name = 'python' 2 print len(f

云课堂-Python学习笔记(6)

一.列表(List) 1.内建数据结构,用来存储一系列元素,如: 1 Lst[0] = 5.4 2 Lst[3] False 3 Lst[1:3]=['Hello',2] 2.列表与字符串的相同点: 索引([]运算符) 切片([:]) 拼接(+)和重复(*) 成员(in运算符) 长度(len()函数) 循环(for) 不同点: 使用[]生成,元素之间用逗号分隔 可以包含多种类型的对象,字符串只能是字符 内容是可变的,字符串是不可变的 1 >>> list=[5.4,'Hello',2]

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

python学习笔记12-模块使用

python学习笔记12-模块使用 模块os,sys 什么是模块? 模块os,sys 模块是Python组织代码的一种基本方式 一个Python脚本可以单独运行,也可以导入到另外一个脚本运行,用import hello语句来导入,不用加入.py 什么是Python的 包? Python的模块可以按照目录组织为包 创建一个包的步骤: 创建一个名字为包名的目录 在改目录下创建一个__init__.py文件 根据需要,在该目录下存放脚本文件或已编译的扩展及子包 import pack.m1,pack.

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

Python学习笔记_Python对象

Python学习笔记_Python对象 Python对象 标准类型 其他内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比较 对象身份比较 布尔类型 标准类型的内建函数 typeObj cmpobj1 obj2 strobj reprobj typeobj isinstanceobj 标准类型的分类 存储模型 更新模型 访问模型 不支持的类型 Python学习笔记_Python对象 首先来理解一个通俗的含义,什么是对象?其实对象无论在什么语言里面

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd