0014 我的字典里不能没有你,关键得有Key
作者:学哥
发布时间:2017-1-22
上节课作业
1. 找到邮政编码里面数字最多的那个省份的名字和共有几个数字,结果应该是四川省和数字4
2. 定义如下的一个座位表,然后输出座位表的每一个人的名字,同时输出是第几排第几列
右下角张鑫晨为第1排第1列
注意最后一排有空位
这个比较简单就不放代码了,需要注意的一点是有2个空位置,可以用空字符串代替即可。如果最上面那行最后一个元素不填写,则循环的时候注意检查list长度,超过list长度范围会出错的。
字典数据类型定义
刚才的作业1里面,为了统计每个省份的个数,用了列表类型来存储,开始的时候列表为空,如果在列表中没有找到省份,则向列表追加一个省份和个数的列表元素,这样的做法用了2层循环,看起来不是太优美,有没有更好的办法呢
用字典数据类型能够解决刚才的问题
字典是一种可变容器,可存储任意类型对象
字典由0到n对键值组成,键值之间用冒号分割,每个对之间用逗号分隔,整个字典包括在花括号中
例如:d = { key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或者元组
2个简单的字典实例:
dict = { "语文课老师" : "张三", "数学课老师" : "李四", "英语课老师" : "王五"}
provinces={"四川" : 4, "湖北" : 2}
访问字典里的值
把相应的键放入方括号,如下:
注意,如果访问不存在的键,则程序会报错
修改字典
通过赋值语句,可以修改字典的对应的键的值,如果该键不存在,则会新增键值,如下:
删除字典元素
和列表一样,使用del命令删除字典的某个键值,或者整个字典,如下:
注意使用del删除dict字典后的结果和用dict.clear()删除字典中的所有元素的结果有何不同,这个可以自己去网上搜索答案
判断是否存在键
使用字典自身的函数dict.has_key(key)来判断是否存在这个键,返回True或者False:
如何遍历字典
使用字典自身的函数dict.keys()来返回一个所有的键的列表,然后用for对这个列表进行循环,循环内部可以利用键来访问值:
改造最多邮编省份名称统计程序
改造统计最多邮编省份名称的程序,将存储统计结果的数据类型改为字典类型
判断是否存在省份名称的键,存在则将统计个数加1,不存在则向字典追加一个列表[省份,个数1]
然后对统计结果字典进行遍历,判断并记录最大个数的那个键
改造后的代码,变得简洁了:
输入一行字符串打印出每个字符出现的次数
程序思路:
模仿上面的程序,针对输入英文字符进行遍历
每个字符判断在统计字典是否存在,存在,则值加1,不存在则赋值为1
遍历统计字典的键,输出个数
大家先不要看下面的代码,自己尝试从零开始编写
代码如下:
结果如下:
课后作业
1.输入一行英文字符,分别统计英文字母/空格/数字/其它字符出现的次数
2.对6个数值进行排序,输出从小到大