python之路day05--字典的增删改查,嵌套
字典dic
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool,int str -->可哈希可变数据类型:list,dict,set --> 不可哈希 dict key(键) 必须是不可变数据类型,可哈希 value(值):任意数据类型 dict优点:二分查找去查询 存储大量的关系型数据 特点:无序,python3.6后版本好像是有序的了
字典的增删改查dist 字典的键可以理解为列表中的索引
dic = {'age':18,'name':'jin','sex':'male',} # 增 dic['hight']=180 # 没有键值对会新增 print(dic)#{'age': 18, 'name': 'jin', 'sex': 'male', 'hight': 180} dic['age']=16 #如果有键,则值会覆盖 print(dic)#{'age': 16, 'name': 'jin', 'sex': 'male', 'hight': 180} dic.setdefault('weight') #有键值对,不做任何改变,没有则添加 dic.setdefault('weight',150) dic.setdefault('name','erge') print(dic)#{'age': 16, 'name': 'jin', 'sex': 'male', 'hight': 180, 'weight': None}
#删 # pop print(dic.pop('age'))#16 返回age对应的值 print(dic.pop('二哥',None)) #None 为了防止删除的时候没有要删除的键,而报错设置一个返回值,也可以是字符串'没有此键' print(dic.pop('name',None)) #jin 删除有的键,即使设置了返回值None也不会返回,而是返回删除成功的值 jin print(dic) #{'name': 'jin', 'sex': 'male', 'hight': 180, 'weight': None}# popitem print(dic.popitem()) #随机删除一个元素,并把删除元素的键和值放在一个元组里返回:(key, value)。 #返回值 ('weight', None) print(dic) #{'sex': 'male', 'hight': 180} #del del dic['sex'] #del +键,按键来删除 print(dic) #{'hight': 180}del dic #删除字典 print(dic)#clear 清空字典 dic.clear(dic) print(dic)
#改 # 1) dic['age']=16 #如果有键,则值会覆盖2) dic = {'name':'zy','age':18,'sex':'male'} dic2 = {'name':'alex','weight':'150'} dic2.update(dic) #一样的键,值会覆盖,不一样的键,会新增 print(dic2) #{'name': 'zy', 'weight': '150', 'age': 18, 'sex': 'male'}
查 dic1 = {'name':'zy','age':18,'sex':'male',} print(dic1.keys()) #dict_keys(['name', 'age', 'sex']) print(dic1.values()) #dict_values(['zy', 18, 'male']) print(dic1.items()) #dict_items([('name', 'zy'), ('age', 18), ('sex', 'male')])print(dic1['name']) #返回值 zy print(dic1['name1']) #会报错,找不到这个键 KeyError: 'name1'#这时可以用dic1.get() 设置一个返回值 如下: print(dic1.get('name1','没有这个键')) #没有这个键 用循环查询 for i in dic1: #dic1与dicdic1.keys()一样,只打印出键print(i) #name age sexfor i in dic1.keys(): #name age sexprint(i)for i in dic1.values():print(i) #zy 18 malefor i in dic1.items(): #返回的是元组,元组里是键值对print(i) #('name', 'zy') ('age', 18) ('sex', 'male')
ps:a,b =1,2print(a,b) #1 2 for j,k in dic1.items(): #可以用两个变量来接收 print(j,k)# name zy#age 18alex male #面试题:a=1b=2# 请用一行代码让a=2,b=1a,b=b,aprint(a,b) #2 1
字典的嵌套
dic = {'name':['alex','wusir','taibai'], 'py9':{ 'time':1213, 'learn_money':'free', 'addr':'CBD', }, 'age':11, }
需求1 age改成56dic['age']=56 print(dic)#{'name': ['alex', 'wusir', 'taibai'], 'py9': {'time': 1213, 'learn_money': 'free', 'addr': 'CBD'}, 'age': 56}#需求1 name加个zy dic['name']#找到的是列表 dic['name'].append('zy') print(dic) #{'name': ['alex', 'wusir', 'taibai', 'zy'], 'py9': {'time': 1213, 'learn_money': 'free', 'addr': 'CBD'}, 'age': 56} taibai 变成大写 dic['name'][2]=dic['name'][2].upper() #字符串的方法upper赋值给新的元素接收 print(dic) #{'name': ['alex', 'wusir', 'TAIBAI'], 'py9': {'time': 1213, 'learn_money': 'free', 'addr': 'CBD'}, 'age': 11}# 在py9里加一个键值对 dic['py9']['sex']='womale' print(dic) #{'name': ['alex', 'wusir', 'TAIBAI'], 'py9': {'time': 1213, 'learn_money': 'free', 'addr': 'CBD', 'sex': 'womale'}, 'age': 11}
ps:例a = ' 123 23 21'print(a.split())l=a.split() #['123', '23', '21']print(len(l))
#输出字符串中有数字的个数 12是一个整体 info= input('>>') #sad12ass22aa22for i in info:if i.isalpha():info=info.replace(i,' ')l=info.split() print(len(l)) #3
相关练习题
# 1/如有下值li=[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存在字典的一个key中。if 将所有小于66的值保存在字典的2个key中: # 即:{'k1':大于66的所有值列表,'k2':小于66的所有值列表} li=[11,22,33,44,55,66,77,88,99,90] l1=[] l2=[] dic={} for i in li:if i == 66:continueif i >66:l1.append(i)else:l2.append(i) dic.setdefault('key1',l1) dic.setdefault('key2',l2) print(dic)
# 2/输出商品列表,用户输入序号,显示用户选中的商品 # 商品li=['手机','电脑','鼠标垫','游艇'] # 要求: # 1.页面显示 序号+商品名称,如: # 1 手机 # 2 电脑 # ... # 2.用户输入选择的商品序号,然后打印商品名称 # 3.如果用户输入的商品序号有误,则提示显示有误,并重新输入。 # 4.用户输入Q或者q,退出程序。# input=input('<<<') # print(len(li)) li=['手机','电脑','鼠标垫','游艇']for i in li:print('{}\t{}'.format(li.index(i)+1,i))while 1:num = input('请输入选择的商品的序号/输出Q或q退出:')if num.isdigit():if int(num) <= len(li) and int(num) > 0:print(li[int(num)-1])else:print('输入有误,请重新输入')elif num.strip().upper() == 'Q':print('成功退出!')breakelse:print('请重新输入,只能输入号码')
习题:
删除key值中含有k元素的键 dic={'k1':'v1','k2':'v2','a3':'v3'} dic1={} for i in dic.keys():# print(i) #k1 k2 a3if 'k' not in i:dic1.setdefault(i,dic[i]) # print(dic1) dic =dic1 print(dic) #{'a3': 'v3'} 第二种 将需要删除的键存在列表中,循环这个列表,删除字典中的键。(字典中遍历的时候不能做删除操作) dic={'k1':'v1','k2':'v2','a3':'v3'} li =[] for i in dic:if 'k' in i:li.append(i) for i in li:del dic[i] print(dic) #{'a3': 'v3'}
转载于:https://www.cnblogs.com/hanfe1/p/10253805.html
python之路day05--字典的增删改查,嵌套相关推荐
- 字典(dict),增删改查,嵌套
一丶字典 dict 用{}来表示 键值对数据 {key:value} 唯一性 键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键 值 没有任何限制 二丶字典的增删改查 1.增 dic[k ...
- python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套
列表增删改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', ...
- python字典进行大写转化_python之字典的增删改查
1.列表的缺点 列表可以存储大量的数据,数据之间的关联性不强. 列表的查询速度比较慢. 容器型数据类型:dict 2.数据类型的分类(可变与不可变) 可变(不可哈希)的数据类型:list dict s ...
- 字典,和字典的增删改查
1. 什么是字典 字典是以key:value的形式来保存数据 用{}表示. 存储的是key:value 2. 字典的增删改查(重点) 1. 添加 dic[新key] = 值 setdefault() ...
- day 05 字典dic(增删改查 嵌套)
字典的初识: why: 列表可以存储大量的数据,数据之间的关联性不强 ['太白', 18, '男', '大壮', 3, '男'] 列表的查询速度比较慢. what:容器型数据类型:dict. how: ...
- JavaWeb进阶之路:MyBatis-CURD(增删改查)
JavaWeb进阶之路:MyBatis-CURD(增删改查) 1. 回顾 上篇文章 JavaWeb进阶之路:MyBatis初体验 带大家对 Mybatis 进行了简单的上手,接下来的这篇文章会带着大家 ...
- python操作postgre库,批量进行增删改查和计时比较效率,封装好的普通增删改查和批量增删改查类拿来即用
python操作postgre库,批量进行增删改查,封装类,拿来即用 1. 新建postgre.py文件,使用psycopg2封装普通增删改查和批量增删改查类 postgre.py import ps ...
- 用Python+Mysql+MDUI实现的数据库增删改查列表操作及单,多文件上传实例
用Python+Mysql+MDUI实现的数据库增删改查列表操作及单,多文件上传实例.web服务用flask框架,数据库操作用的pymysql框架.教程在我B站有的. 开源地址:https://git ...
- python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码)
python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码) 最近学校实训,用两天时间做了一个python小程序*机房收费管理系统*,一款基于tkinter使用p ...
最新文章
- 排序算法整理(第十五周实践项目)
- Bootstrap系列 -- 37. 基础导航样式
- MultiSlider组件
- webpack图解-学习笔记
- 不会手绘有福了!场景的插画素材帮你搞定!
- Js和jQuery的文档就绪函数以及执行次数
- VMware NSX词汇表
- 通过poi读取ppt元素demo
- 基于javaweb宠物领养平台管理系统设计和实现
- 百度测试开发面试题整理
- RPA手把手—— RPA 数据库篇 6 - MySQL 篇 2 - 增删改查 1
- linux中怎么连接wifi密码,Linux终端中连接WiFi的方法
- 计算机英语 病毒 教案,计算机病毒及其防治教案.doc
- Android视频监控实现(一)
- BetaFlight模块设计之九:气压计任务分析
- c#连mysql 连接字符串
- Vegas Pro 16你不知道的那些事~
- 如果后端API一次返回10万条数据,前端应该如何处理?
- 一个优秀的前端工程师简历应该是怎样的?
- 3G时代五大手机操作系统
热门文章
- 特斯拉自动驾驶新能力:识别红绿灯停车标识;尝鲜车主:实用好用
- 利用外部知识增加QA答案自然程度,这是阿里的问答模型新思路丨EMNLP
- 谷歌量子计算突破登Nature封面,200秒顶超算10000年,川普之女:美国实现量子霸权...
- 360浏览器、chrome开发扩展插件教程(2)为html添加行为
- 世界银行拨款2293万美元支持印度并网屋顶太阳能
- sublime快捷键
- Linux 时钟精度 与 PostgreSQL auto_explain (explain timing 时钟开销估算)
- 理解Linux中断 (2)【转】
- Connect(); // 2015 简要整理
- 116. Populating Next Right Pointers in Each Node