字典 Dictionary

+什么是字典?

+一系列的"键-值(key-value)"对

+通过"键"查找对应的"值"

+类似纸质字典,通过单词索引表找到其相应的定义

C++:map

Java:HashTable or HashMap

例如:电话本

创建字典

使用 { } 创建字典
使用 : 指明 键:值 对
my_dict = {'John':86411234,'Bob':86419453,'Mike':86412387} 键必须是 不可变 的且不重复,值可以是 任意 类型

访问字典

使用 [ ] 运算符,键作为索引
print my_dict['Bob']
print my_dict['Tom']#WRONG! 增加一个新的对
my——dict['Tom'] = 86417649

字典中键是无序的

字典运算符和方法

len(my_dict)

求字典中键-值对的数量

key in my_dict

快速判断key是否为字典中的键:O(1)
等价于my_dict.has_key(key) 时间复杂度为常数,不随字典规模变化

for key in my_dict:

枚举字典中的键,注:键是无序的

更多方法

my_dict.items()- 返回全部的键-值对 以列表形式
my_dict.keys()- 全部的键
my_dict.values()- 全部的值
my_dict.clear()- 清空字典

+字母计数

读取一个字符串,计算每个字母出现的个数

1.生成26个变量,代表每个字母出现的个数

2.生成具有26个元素的列表,将每个字母转化为相应的索引值,如a->0,b->1,...

s = 'asffghjljkl'

lst = [0] * 26

for i in s:
lst[ord(i) - 97] += 1 print lst

3.生成一个字典,字母做键,对应出现的次数做值

s = 'asffghjljkl'

d = {}

for i in s:
if i in d:
d[i] += 1
else :
d[i] = 1 print d

+单词计数

读取小说“emma.txt”,打印前10个最常见单词

是否还能直观的将每个单词转化为相应的数字?

sort默认升序

f = open('emma.txt')

word_freq = {}

for line in f:
words = line.strip().split()
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1 freq_word = []
for word,freq in word_freq.items():
freq_word.append((freq,word)) freq_word.sort(reverse = True) for freq,word in freq_word[:10]:
print word f.close()

+翻转字典

生成一个新字典,其键为原字典的值,值为原字典的键

同一个值,可能对应多个键,需要用列表存储

d1 = {'Zhang':123,'Wang':456,'Li':123,'Zhao':456}
d2 = {} for name,room in d1.items():
if room in d2:
d2[room].append(name)
else:
d2[room] = [name] print d2

note 11 字典的更多相关文章

  1. think in python 11 字典

    字典 字典类似于列表,但更加通用 键值对 ,字典是 键与值之间的映射,每个键都映射到一个值上 dict可以创建一个不包含任何项的字典 eng2sp = dict() print eng2sp 还可以给 ...

  2. Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)

    Linux 文件系统与设备文件系统(3) 成于坚持,败于止步 sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs ...

  3. python note 05 字典及其操作

    1. '''#数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,bool int str 可哈希可变数据类型:list,dict set 不可哈希dict key 必须是不可变数据类型, ...

  4. 383. Ransom Note 在字典数组中查找笔记数组

    [抄题]: Given an arbitrary ransom note string and another string containing letters from all the magaz ...

  5. python note 11 函数名的使用、闭包、迭代器

    1.函数名就是一个变量 def func(): print("我是一个小小的函数") a = func print(a) #输出变量存放地址 <function func a ...

  6. Master Note for Transportable Tablespaces (TTS) -- Common Questions and Issues (Doc ID 1166564.1)

    APPLIES TO: Oracle Database Cloud Exadata Service - Version N/A and laterOracle Database Cloud Servi ...

  7. 你真的了解字典(Dictionary)吗?

    从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点. 为了便于描述,我把上面的那条线路称为线路1,下面的称为线路2. 思路 ...

  8. 周末学习笔记——day02(带参装饰器,wraps修改文档注释,三元表达式,列表字典推导式,迭代器,生成器,枚举对象,递归)

    一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改 ...

  9. python(二)——list、字典、字符串操作

    列表——list 假设一种场景,想要存班里所有同学的名字,那应该拿什么存呢? 我们可以拿一个字符串去存,例如: stus = "s1,s2,s3,s4,s5……sn" 那我们要从里 ...

随机推荐

  1. 搞Java

    上班之余,开始研究Java了. 想想从三月份开始自己啃书以来,Spring+Mybatis+公司框架的用法,基本都是速成来的,还是有些恐惧的. Spring万般爽,annotion用的很舒服,但还是想 ...

  2. windows下python双系统安装

    1.首先安装Python2,确认好Python2的安装位置.接着安装Python3,并确定Python3的安装位置. 2.确认系统变量PATH中有python2和python3各自两个的路径,如: D ...

  3. linux下用命令安装node&pm2

    我的安装环境是腾讯云centos7操作系统,并且将安装包下载到了/usr/local/src目录下 一.下载node安装包 1.wget https://npm.taobao.org/mirrors/ ...

  4. angular 实现左侧和顶部固定定位布局

    1 布局基于angular ng-zorro组件库实现 由于项目中使用了组件库并且要求响应式布局,卡在这个坑上两天,多次调试后终于解决 代码仅供参考,由于没有上传依赖的库和组件包无法直接运行,提供代码 ...

  5. 播放器: AVPlayer

    AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://flv2.bn.netease.com/vi ...

  6. 随笔:关于Class.getSimpleName()

    最近学习过程中,遇到了Class.getSimpleName()这个方法,就搜索了一些资料: API定义: Class.getName():以String的形式,返回Class对象的"实体& ...

  7. 渗透测试学习 四、 HTML基础

    HTML是一种解释型语言,解释给浏览器解析执行显示给用户浏览,是一种静态,无交互的 超文本标记语言(Hyper Text Markup Language),标准通用标记语言下的一个应用.HTML 不是 ...

  8. Java scirpt简介

    JavaScript 简介 JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 H ...

  9. java面试总躲不过的并发(二):volatile原理 + happens-before原则

    一.happens-before原则 同一个线程中的,前面的操作 happens-before 后续的操作.(即单线程内按代码顺序执行.但是,在不影响在单线程环境执行结果的前提下,编译器和处理器可以进 ...

  10. [SQL Server] sysobjects的介紹

    sysobjects表 數據庫中所創建的每個對象(約束.默認值.日誌.規則.存儲過程等)都各以一行資訊呈現於表中. 而臨時對象只有在tempdb內,才在該表中各佔一行. sysobjects 表結構: ...