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':''}
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 sex for i in dic1.keys(): #name age sex
print(i) for i in dic1.values():
print(i) #zy 18 male for i in dic1.items(): #返回的是元组,元组里是键值对
print(i) #('name', 'zy') ('age', 18) ('sex', 'male')
ps:
a,b =1,2
print(a,b) #1 2 for j,k in dic1.items(): #可以用两个变量来接收
print(j,k)
# name zy
#age 18
alex male #面试题:
a=1
b=2
# 请用一行代码让a=2,b=1
a,b=b,a
print(a,b) #2 1
字典的嵌套
dic = {'name':['alex','wusir','taibai'],
'py9':{
'time':1213,
'learn_money':'free',
'addr':'CBD',
},
'age':11,
}
需求1 age改成56 dic['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('>>') #sad12ass22aa22 for i in info:
if i.isalpha():
info=info.replace(i,' ') l=info.split()
print(len(l)) #
相关练习题
# 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:
continue
if 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('成功退出!')
break
else:
print('请重新输入,只能输入号码')
习题:
删除key值中含有k元素的键
dic={'k1':'v1','k2':'v2','a3':'v3'}
dic1={}
for i in dic.keys():
# print(i) #k1 k2 a3
if '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'}
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(三)字典的增删改查和遍历
一.增加
- DAY5(PYTHON) 字典的增删改查和dict嵌套
一.字典的增删改查 dic={'name':'hui','age':17,'weight':168} dict1={'height':180,'sex':'b','class':3,'age':16} ...
- 2018.8.1 python中字典的增删改查及其它操作
一.字典的简单介绍 1.dict 用{}来表示 键值对数据 {key:value} 唯一性 2.键都必须是可哈希,不可变的数据类型就可以当做字典中的键 值没有任何限制 ...
- python字典的增删改查
字典dict 知识点: {}括起来,以键值对形式存储的容器性数据类型: 键-必须是不可变数据类型,且是唯一的: -值可以是任意数据类型.对象. 优点:关联性强,查询速度快. 缺点:以空间换时间. 字典 ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- Python学习---django之ORM的增删改查180125
模型常用的字段类型参数 <1> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数 ...
随机推荐
- selenium-确定找到的element唯一(三)
在python + selenium 中经常会遇到找到的元素不唯一,导致定位到的元素不是预期的或者定位不到元素 解决方法:只要在页面进行确认找到的元素唯一后,再进行操作 页面确认方法: 1.通过htm ...
- javaweb学习--jsp
阅读电子书<Java Web从入门到精通>密码:461c,学习JavaWeb基础知识.由于本人已有html基础,所以直接略过前面部分,进入jsp学习 jsp页面添加库引用,引入项目文件 引 ...
- 建立第一个SpringBoot小列子(碰到的错误)
当加入@SpringBootApplication注解时,无法得到解析 错误提示:SpringBootApplication cannot be resolved to a type 错误原因是因为s ...
- SQLServer之删除索引
使用SSMS数据库管理工具删除索引 使用表设计器删除索引 表设计器可以删除任何类型的索引,本示例演示删除XML辅助索引,删除其他索引步骤相同. 1.连接数据库,选择数据库,展开数据库->选择数据 ...
- WPF中自定义标题栏时窗体最大化处理之WindowChrome
注意: 本文方法基础是WindowChrome,而WindowChrome在.NET Framework 4.5之后才集成发布的.见:WindowChrome Class 在.NET Framewor ...
- Kafka 0.11.0.0 实现 producer的Exactly-once 语义(英文)
Exactly-once Semantics are Possible: Here’s How Kafka Does it I’m thrilled that we have hit an excit ...
- flex布局justify-content属性和align-items属性设置
前言: flex最常用的就是justify-content和align-items了,这里把这两个属性介绍下,大家更多关于flex布局可以查看阮一峰的日志,写的非常清楚! 阮一峰flex布局的日志:h ...
- PHP7--PHP的一次重大变革
PHP7--PHP的一次重大变革 一.写在开头 PHP7是PHP编程语言全新的一个版本,主要在性能方面获得了极大的提升.官方的文档显示,PHP7可以达到PHP5.x版本两倍的性能.同时还对PHP的语法 ...
- (四)Exploring Your Cluster
The REST API Now that we have our node (and cluster) up and running, the next step is to understand ...
- Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
SpringBoot启动时的异常信息如下: "C:\Program Files\Java\jdk1.8.0_161\bin\java" ......... com.fangxing ...