字典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--字典的增删改查,嵌套的更多相关文章

  1. 字典(dict),增删改查,嵌套

    一丶字典 dict 用{}来表示  键值对数据  {key:value}  唯一性 键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键 值 没有任何限制 二丶字典的增删改查 1.增 dic[k ...

  2. python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套

    列表增删改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', ...

  3. Python(三)字典的增删改查和遍历

    一.增加

  4. DAY5(PYTHON) 字典的增删改查和dict嵌套

    一.字典的增删改查 dic={'name':'hui','age':17,'weight':168} dict1={'height':180,'sex':'b','class':3,'age':16} ...

  5. 2018.8.1 python中字典的增删改查及其它操作

    一.字典的简单介绍 1.dict 用{}来表示       键值对数据           {key:value} 唯一性 2.键都必须是可哈希,不可变的数据类型就可以当做字典中的键 值没有任何限制 ...

  6. python字典的增删改查

    字典dict 知识点: {}括起来,以键值对形式存储的容器性数据类型: 键-必须是不可变数据类型,且是唯一的: -值可以是任意数据类型.对象. 优点:关联性强,查询速度快. 缺点:以空间换时间. 字典 ...

  7. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  8. python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查

    python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...

  9. Python学习---django之ORM的增删改查180125

    模型常用的字段类型参数 <1> CharField        #字符串字段, 用于较短的字符串.        #CharField 要求必须有一个参数 maxlength, 用于从数 ...

随机推荐

  1. DVWA 黑客攻防演练(八)SQL 注入 SQL Injection

    web 程序中离不开数据库,但到今天 SQL注入是一种常见的攻击手段.如今现在一些 orm 框架(Hibernate)或者一些 mapper 框架( iBatis)会对 SQL 有一个更友好的封装,使 ...

  2. 从分治算法到 Hadoop MapReduce

    从分治算法说起 要说 Hadoop MapReduce 就不得不说分治算法,而分治算法其实说白了,就是四个字 分而治之 .其实就是将一个复杂的问题分解成多组相同或类似的子问题,对这些子问题再分,然后再 ...

  3. 从0开始的Python学习002python的数据类型

    在创建变量的时候不用声明数据类型 # 创建变量 a = 10 # 打印变量值 print(a) 结果如下: 这种感觉和Java有很大的不同,感觉python很神奇,数据的类型是python自己决定的. ...

  4. EF ORM

    //新增 UserInfo userInfo = new UserInfo(); userInfo.UserName = "YANG"; userInfo.UserPass = & ...

  5. SpringIOC和AOP简单概述

    Spring学习:主要学习两大块IOC   AOP 一.IOC   IOC:控制反转(也可以叫做依赖注入)的基本认识:   当某个Java对象(调用者)需要调用另一个Java对象(被依赖对象)的方法时 ...

  6. c# 7.0 6.0 新语法

    1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...

  7. 手把手教你发布一个Python包

    本文主题如下: 编写一个包(Python 源代码),但不是本文的重点. 编译包,观察编译后的文件. 发布包,发布的包可以有多种类型. 如何在 Pypi 中查看已发布的包 注意: 本文编写的包在 Pyt ...

  8. 将arguments转换成数组的方法

    将函数里的arguments,转换成一个真正的数组的方法,arguments是个类数组,除了有实参所组成的类似数组以外,还有自己的属性,如callee,arguments.callee就是当前正在执行 ...

  9. ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志

    这是<ABP大型项目实战>系列文章的一篇.   项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢?   我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...

  10. 关于IOC容器的一些个人理解

    一丶前言 下面是本人对于IOC容器的一些个人理解,希望能帮到初学者认识IOC,如有理解得不对的地方欢迎指正,也让我学学. 二丶IOC是什么,它是干嘛的? IOC只是一种编程思想,不局限于任何一种语言, ...