note 11 字典
字典 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 字典的更多相关文章
- think in python 11 字典
字典 字典类似于列表,但更加通用 键值对 ,字典是 键与值之间的映射,每个键都映射到一个值上 dict可以创建一个不包含任何项的字典 eng2sp = dict() print eng2sp 还可以给 ...
- Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)
Linux 文件系统与设备文件系统(3) 成于坚持,败于止步 sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs ...
- python note 05 字典及其操作
1. '''#数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,bool int str 可哈希可变数据类型:list,dict set 不可哈希dict key 必须是不可变数据类型, ...
- 383. Ransom Note 在字典数组中查找笔记数组
[抄题]: Given an arbitrary ransom note string and another string containing letters from all the magaz ...
- python note 11 函数名的使用、闭包、迭代器
1.函数名就是一个变量 def func(): print("我是一个小小的函数") a = func print(a) #输出变量存放地址 <function func a ...
- 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 ...
- 你真的了解字典(Dictionary)吗?
从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点. 为了便于描述,我把上面的那条线路称为线路1,下面的称为线路2. 思路 ...
- 周末学习笔记——day02(带参装饰器,wraps修改文档注释,三元表达式,列表字典推导式,迭代器,生成器,枚举对象,递归)
一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改 ...
- python(二)——list、字典、字符串操作
列表——list 假设一种场景,想要存班里所有同学的名字,那应该拿什么存呢? 我们可以拿一个字符串去存,例如: stus = "s1,s2,s3,s4,s5……sn" 那我们要从里 ...
随机推荐
- C# 记录日志
public static void WriteLogs(string fileName, string type, string content) { string path = AppDomain ...
- Linux-1-用户管理
目录: 用户账号的添加.删除与修改 用户口令的管理 用户组的管理 总结用户与用户组常用命令 ***用户账号的添加.删除与修改*** 添加用户:useradd 选项 用户名 选项: -c comme ...
- Redis的主从复制(十一)
1>什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后(在使用aof和rdb方式时,如果redis重启,则数据从aof文件加载)会将硬盘上持久化的数据恢复 ...
- 获取Xcode工程所有的类名
有的时候在需求中需要获取工程中所有的类名.例如在获取工程中继承某个类的列表. 核心代码如下: unsigned ; const char **classes = nil; Dl_info info; ...
- linux学习笔记2 - linux常用命令
转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...
- 20155219付颖卓《网络对抗》MSF基础应用实验
实验后回答问题 1.用自己的话解释什么是exploit,payload,encode. exploit就是进行攻击的那一步 payload是在目标主机上创建会话连接的 encode是对payload进 ...
- Node版本管理工具-NVM的安装与使用(windows系统)
友情提示:为避免踩坑,建议浏览全文后动手操作!!! 一.nvm是什么 看到这篇文章的猿/媛们肯定不会问这个问题了,但是我还是要说,哈哈哈! 无论工作还是干嘛,就不会一直做项目,所以肯定也不会一直用一个 ...
- 最新版的Chrome如何设置网页编码
在最新的V55版本中已经没有了编码选项,没有了这个可能会导致一些特殊编码网页出现乱码问题.那么如何找回这个Chrome的编码功能?可以通过下载chrome扩展:Set Character Encodi ...
- 删除排序数组中的重复项-leetcode-26
public: int removeDuplicates(vector<int>& nums) { int size=nums.size(); i ...
- java删除文件支持通配符
原文:https://blog.csdn.net/wdzayyt/article/details/7209530 感谢原作者 package com.covics.zfh; import java.i ...