python学习笔记(三)- 字典、集合
字典:key-value形式
1)取数据方便 #字典里面没有重复的key
2)查询速度快
#字典是无序的
一、定义一个字典
- infos = {
- 'name':'王小明',
- 'sex':'male',
- 'addr':'北京',
- 'age':'' #最后没逗号
- }
- print(infos.get('name')) #>>> 王小明
二、字典的方法:
1)查:
字典的取值:有两种方法
- ①print(infos.get('name')) #如果key不存在,返回None
- print(infos.get('name',404)) #如果key不存在,返回定义的404
- ②print(infos['sex']) #如果key不存在会报错
2)增:三种增加的方式
- ①infos['phone']=15866661111 #增加一个key-v
- ②infos.setdefault('money','100w') #增加一个k-v
- print(infos)
这两方式的区别:key存在时,都能增加,但是
- infos['phone']=15866661112 #如果key存在时,会修改原来的value
- infos.setdefault('name','张晓') #如果key存在时,不会修改原来的值
- print(infos)
将一个变量加入字典:
- users.setdefault(username,pwd) #方式一
- users[username]=pwd #方式二
合并两个字典:a.update(b)
- a = {'a':''}
- b = {'b':''}
- a.update(b) #如果b字典的key与a中的key相同,b会更新a的value
- print(a)
- >>> {'a': '', 'b': ''}
2)修改:一种方式
- infos['name']= '小胖'
3)删:
- infos.pop('age') #指定key来删除
- infos.popitem() #随机删除一个key(用处不大)
- del infos['phone'] #指定key来删除
- infos.clear() #清空字典
- print(infos)
三、字典里常用的三个内置方法:
- print(d.values()) #获取字典所有的value
- print(d.keys()) #获取字典所有的key
- print(d.items()) #获取字典所有的k-v
四、【字典举例】
- people = {
- '田雨':{
- 'age':18,
- 'money':200000,
- 'clothes':'100套',
- 'hzp':'n多',
- 'shoes':['nike','addis','lv','chanle']
- },
- '张三':{
- '金库':'2000w',
- 'house':['三环一套','4环2套'],
- 'cars': {
- 'japan':['普拉多','兰德酷路泽'],
- 'usa':['林肯','凯迪拉克','福特'],
- 'china':['五菱宏光','qq','红旗']
- }
- }
- }
- people['张三']['cars']['usa'].append('牧马人')
- # people['田雨']['shoes'].append('匡威') #
- # print(people)
- # people['田雨']['money'] = people['田雨']['money']+200
- # people['田雨']['money'] += 200
- # print(people)
五、字典的循环:
1)直接循环字典的话,只取到字典的key
- for p in people:
- print(p)
>>>张三
田雨
2)循环的时候,同时取字典的key和value
- for k,v in people.items():
- print(k,'--->',v)
输出:
- 田雨 ---> {'age': 18, 'clothes': '100套', 'hzp': 'n多', 'shoes': ['nike', 'addis', 'lv', 'chanle'], 'money': 200000}
- 张三 ---> {'cars': {'china': ['五菱宏光', 'qq', '红旗'], 'japan': ['普拉多', '兰德酷路泽'], 'usa': ['林肯', '凯迪拉克', '福特', '牧马人']}, '金库': '2000w', 'house': ['三环一套', '4环2套']}
3)字典里面用in来判断某个值是否存在话,只是判断key是否存在
- if 'key1' in users: #存在返回True,不存在返回False
- print('xxx')
六、【字典练习二】:注册-字典
- #注册:验证用户名是否已存在,将新注册的用户名和密码加入到字典
- users = {
- 'zhangsan':'',
- 'wangwu':'',
- }
- for i in range(3): #限制错误3次
- username = input('账号:').strip()
- passwd = input('密码:').strip()
- cpasswd = input('密码确定:').strip()
- if username=='' or passwd=='' or cpasswd=='':
- print('用户名/密码不能为空')
- elif username in users:
- print('用户名已经被注册!')
- elif passwd!=cpasswd:
- print('两次输入的密码不一致')
- else:
- print('恭喜,注册成功!')
- # users.setdefault(username,passwd)
- users[username]=passwd #注册成功,将key和value加入users的字典
- break #
- else:
- print('错误次数过多')
- print(users)
七、【字典练习三】:
- #写一个录入学生作业情况的一个程序:
- #1、查看学生作业情况 ,输入用户名 #choice=1
- #存在的话,print
- #不存在的话
- #2、录入学生作业情况(姓名、日期、已交/未交) #choice=2
- #3、录入的情况允许输入3次,需要验证为空的情况
- #判断choice不存在的情况
- homeworks = {
- '张流量':{'2018.3.22':"未交",'2018.3.23':'wei交'},
- '田雨':{'2018.3.22':"未交",'2018.3.23':'wei交'},
- }
- choice = input("请输入您的选择 1:查看学生作业情况 2:录入学生作业情况:")
- if choice == '':
- for x in range(3):
- name = input("请输入您要查看的学生的姓名:").strip()
- if name in homeworks:
- print("%s:%s" %(name,homeworks[name]))
- break
- elif name=='':
- print("姓名不能为空")
- else:
- print("没有找到此学生信息")
- else:
- print("查询次数过多,请稍后再试")
- elif choice == '':
- for i in range(3):
- username = input("请输入需要录入的学生的姓名:").strip()
- date = input("请输入需要录入的日期:").strip()
- status = input("请输入'已交'或'未交':").strip()
- if username=='' or date=='' or status=='':
- print("录入的信息不完整")
- elif username in homeworks:
- homeworks[username][date] = status #姓名+ 时间相同时,不报错,可更新原来已录入的状态,效果和update一样
- #homeworks[username].setdefault(date,status) #姓名+ 时间相同时,不报错,但是状态不能更新
- #homeworks[username].update({date:status})
- print("您录入后此学生的信息更新为,%s:%s" % (username, homeworks[username]))
- break
- else:
- homeworks[username] = {date:status} #k-v的形式
- print("您录入学生的信息为,%s:%s" % (username,homeworks[username]))
- break
- else:
- print("输入错误次数过多")
- else:
- print("输入错误,请输入1或2")
- print("已录入的全部信息:%s" % homeworks)
集合:
一、集合的定义
- 定义空集合:s = set()
- 定义集合:s = {1,3,5,7} #注意与字典区分
- d = {'k':'v'} #字典
集合天生就能去重(集合中没有重复的元素),集合也是无序的
- s = set('') #字符串/list可以强制转换为集合
- print(s)
- >>> {'', '', '', ''} #去除了重复的元素
二、集合的交集、并集、差集
1)取交集:取两个集合都有的元素
- s2 = set('')
- s3 = {'', '', '', '', ''}
- print(s2 & s3) #取交集的第一种方式
- print(s3.intersection(s2)) #取交集第二种方式
- >>> {'', '', '', ''}
- {'', '', '', ''}
2)取并集:两个集合合并到一起,并去重
- print(s2 | s3) #方式一
- print(s2.union(s3)) #方式二
3)取差集:去掉set3
- print(s2-s3)
- print(s2.difference(s3)
4)对称差集:保留两集合都没有的,去掉都有的
- print(s2 ^ s3)
- print(s4.symmetric_difference(s5))
三、集合的方法:
增、删、改、判断交集
- s.add('ss') #加元素
- s.pop() #随机删除
- s.remove('ss') #删除某个元素
- s.update({1,2,3}) #把另一个集合加进去
- s.isdisjoin(s1) #两个集合没有交集返回True,有交集返回False
- 张三
python学习笔记(三)- 字典、集合的更多相关文章
- python学习笔记(三)---字典
字典 在Python中,字典 字典 是一系列键 键-值对 值对 .每个键 键 都与一个值相关联,你可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将 任何Py ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- Python 学习笔记三
笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像arg ...
- python学习笔记三--字典
一.字典: 1. 不是序列,是一种映射, 键 :值的映射关系. 2. 没有顺序和位置的概念,只是把值存到对应的键里面. 3. 通过健而不是通过偏移量来读取 4. 任意对象的无序集合 5. 可变长,异构 ...
- python学习笔记(三)、字典
字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...
- python学习笔记(三)-列表&字典
列表: 一.列表操作"""Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一 ...
- Python学习笔记四--字典与集合
字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...
- python学习笔记(三):文件操作和集合
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...
- python学习笔记三--字典的使用
一.基本使用: 1. 赋值:{key:value} 1.1 与列表相同处:会改变索引(键)相关联的值的改变 1.2 与列表不同处:不用考虑值的长度,而列表是有序的需要考虑末尾偏移量,超过末尾偏移量的会 ...
- Python学习笔记004_字典_集合
>>> # 字典 用大括号表示, 它是影射类型,相当于java中的Map >>> >>> dict1 = {'李宁': '一切皆有可能', '耐克 ...
随机推荐
- 2017-2018 ACM-ICPC, NEERC A题Automatic Door 挺棘手的模拟
题目链接:http://codeforces.com/contest/883/problem/A 题意大致就是有一个门,有n个人有规律的来,时刻分别是a,2a,3a.....na.有m个人无规律的来, ...
- Atom+latex+中文环境
最近在写论文,的路上.很多idea都受限于官方给的模板不能够添加自己即时的中文idea,所以添加中文到文献中很有必要,这里记录自己添加中文的几个小步骤 1. 受限将atom中的latex packag ...
- spring(一、原理、IOC、AOP、依赖注入)
1.spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建.调用对象,Spring就是在运 ...
- linux下(Window当然也可以)解决idea创建maven项目导入过慢问题
1.正常创建maven web项目 2.见下图,选择加号 3.弹出的框中填入archetypeCatalog----internal,确定即可
- Gym - 100796I:Shell Game(圆台的最大内接球半径)
pro:如题.给定上圆半径r,下圆半径R,高度h.问最大内接球半径. sol:由对称性,我们放到二维来看,即给这么一个梯形,问最大内接圆半径. 证明:如果是一个三角形的内接圆C,他内切于三边. 现在这 ...
- alpha冲刺(7/10)
前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 撰写博客 项目初步整合前端代码 问题困扰: 大家可能因为某些问题会联系卡在某个点很久,需 ...
- (32)forms组件(渲染自建规则:局部钩子函数和全局钩子函数)
要达成渲染自建规则 1.局部钩子函数(某个字段,自定意义规则,不如不能以sb开头,数据库已存在等) 2.全局钩子函数(校验两次密码是否一致) 3.使用css样式 register.html <! ...
- pam模块初探
- 我发起并创立了一个 C 语言编译器 开源项目 InnerC
本文是 VMBC / D# 项目 的 系列文章, 有关 VMBC / D# , 见 <我发起并创立了一个 VMBC 的 子项目 D#>(以下简称 <D#>) https: ...
- python 常用的模块
面试的过程中经常被问到使用过那些python模块,然后我大脑就出现了一片空白各种模块一顿说,其实一点顺序也没有然后给面试官造成的印象就是自己是否真实的用到这些模块,所以总结下自己实际工作中常用的模块: ...