数据类型的划分:可变数据类型和不可变数据类型。

  不可变数据类型(可哈希):元祖、bool、int、str

  可变数据类型(不可哈希):list、dict,set(集合)

dict(字典):

dict(字典):映射数据类型

dict =  {"key":value}

dict key 必须不可变数据类型,可哈希。

  value  任意数据类型

dict 优点:二分法查找去查询

     存储大量的关系型数据

    特点:无序的(3.5及其之前的版本)

# dict = {
# 'name':['韩非','黄有华','林颖','谢龙','李霞霞','纪伟鹏'],
# '配送':[{'num':12,'avera_age':20}],
# True:1,
# (1,2,3):'wuyiyi',
# 2:'二哥',
# }
# print(dict)
#例子
# dict1 = {'age':18,'name':'jone','sex':'male'} #增 dict['key']:value 或 setdefault(key,value)
# dict1['hight']=185 #没有键值对,添加
# dict1['age'] = 16 #如果有键值对,则值覆盖
# print("dict1['hight']=185 and dict1['age']=16",dict1)
# 输出结果:
# dict1['hight']=185 and dict1['age']=16 {'hight': 185, 'sex': 'male', 'age': 16, 'name': 'jone'}
#setdefault() 已经存在键值对,不做任何改变,没有在添加
# dict1.setdefault('weight',150)
# dict1.setdefault('name','alex')
# print(dict1)
# 输出结果:
# dict1['hight']=185 and dict1['age']=16 {'hight': 185, 'sex': 'male', 'age': 16, 'name': 'jone'} #删 pop(key,'设置返回值')、popitem(key)随机删除,有返回值、del dict[key] 不存在会报错、clear()清空字典
#ps:None是一种数据类型
# print(dict1.pop('age'),dict1)
# print(dict1.pop('yijiajun',None),dict1)
# 输出结果:
# 18 {'name': 'jone', 'sex': 'male'}
# None {'name': 'jone', 'sex': 'male'}
# print(dict1.popitem(),dict1)
# 输出结果:
# ('name', 'jone') {'sex': 'male', 'age': 18}
# del dict1['age']
# print(dict1)
# 输出结果:
# {'name': 'jone', 'sex': 'male'}
# del dict1
# print(dict1)
# 输出结果:
# print(dict1)
# NameError: name 'dict1' is not defined #改
# dict1['age'] = 20
# print(dict1)
# 输出结果:
# {'name': 'jone', 'sex': 'male', 'age': 20}
#update() 已经存在的键值对,会更新value,不存在的键值对,则添加
# dict2 = {'name':'yijiajun','heigh':175,'weight':75}
# dict1.update(dict2)
# print(dict1,dict2) #查
# print(dict1.keys(),type(dict1.keys()))
# print(dict1.values(),type(dict1.values()))
# print(dict1.items(),type(dict1.items()))
# print(dict1.get('name'),type(dict1.get('name')))
# print(dict1.get('yijia'),'不存在key')
# 输出结果:
# dict_values([18, 'male', 'jone']) <class 'dict_values'>
# dict_items([('age', 18), ('sex', 'male'), ('name', 'jone')]) <class 'dict_items'>
# jone <class 'str'>
# None 不存在key #for .....in.....遍历任何项目的序列
#遍历key
#方法一
# for i in dict1.keys():
# print(i)
#方法二
# for i in dict1:
# print(i)
#遍历value
# for i in dict1.values():
# print(i)
#以元祖的形式同时遍历key和value
# for i in dict1.items():
# print(i,type(i))
# 输出结果:
# ('sex', 'male') < class 'tuple'>
# ('name', 'jone') <class 'tuple'>
# ('age', 18) < class 'tuple'>
#以字符串的形式同时遍历key和value
# for k,v in dict1.items():
# print(k,v,type(k),type(v))
# 输出结果:
# dict_values([18, 'male', 'jone']) <class 'dict_values'>
# dict_items([('age', 18), ('sex', 'male'), ('name', 'jone')]) <class 'dict_items'>
# jone <class 'str'>
# None 不存在key #字典嵌套
# dic = {
# 'name':['yijiajun','yijiaping','yijiaxing'],
# 'home.yee':{
# 'born' :1995,
# 'count':85,
# 'old':'grandfather'
# },
# True:1,
# (1,2,3):'yimeiling',
# 'age':21
#
# }
# dic['age'] = 56
# dic['name'][0] = dic['name'][0].upper()
# dic['name'].append('wangxizhi')
# dic['home.yee']['color'] = 'red'
# dic['home.yee'].setdefault('like','fish')
# dic['home.yee'].pop('born','已经删除')
# print(dic['home.yee'].pop('born','已经删除')) #课间题 统计数字出现的次数(连续的数字为1个)
info = input('请输入您要检测的数字:').strip()
for i in info:
if i.isalpha():
info = info.replace(i,' ')
l = info.split( )
print(l)
print(len(l))

Python 全栈开发:dict(字典)常用方法操作、dict嵌套的更多相关文章

  1. python 全栈开发,Day101(redis操作,购物车,DRF解析器)

    昨日内容回顾 1. django请求生命周期? - 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者po ...

  2. python 全栈开发,Day8(文件操作)

    一.文件操作流程 文件以什么编码存储的,就以什么编码打开 参数: 1.文件路径 2.编码方式,encode 3.执行动作(打开方式):只读,只写,追加,读写,写读... 打开一个已经存在的文件 f = ...

  3. python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域

    一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...

  4. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  5. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  6. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

  7. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  8. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  9. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  10. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

随机推荐

  1. asp.net core 1.1 + mysqlsugar + y-ui Demo

    最近研究下asp.net core 此源码架构 : .net core  mvc 简单三层 依赖注入(.net core自带) mysql + mysqlsugar +sqlsugarcore 需要修 ...

  2. android虚拟机的垃圾收集

    Dalvik :http://zh.wikipedia.org/wiki/Dalvik%E8%99%9A%E6%8B%9F%E6%9C%BA ART :http://source.android.co ...

  3. 博客和Github简单练习

    我的第一篇博客 1.首先是自我介绍 姓名:孙弘毅 班级:网工142 学号:1413042050 兴趣:游戏,看书 至于我写了多少代码我也不清楚,反正不多 2.Github  注册流程 (1)百度Git ...

  4. hibernate 中 fetch=FetchType.LAZY 懒加载失败处理

    对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,使得Hi ...

  5. [Erlang25]Erlang in anger 翻译

    Erlang in anger     Erlang in anger 是写Learn some Erlang的帅小伙(照片真是帅死啦)写的,一共87页,可以随意下载(英文原版):http://www ...

  6. Buffer Pool--内存相关术语

    虚拟地址空间(virtual address space): 供应用程序能够申请访问的最大地址空间,32位系统上为4GB,64位系统上是8TB,虚拟地址空间映射的数据不一定存放在物理内存中,还可能存放 ...

  7. c#中sealed修饰符

    sealed 修饰符表示密封 用法: 1.用于类时,表示该类不能再被继承,不能和abstract同时使用,因为这两个修饰符在含义上互相排斥 2.用于方法和属性时,表示该方法或属性不能再被重写,必须和o ...

  8. Ocelot 新手上路

    新手上路,老司机请多多包含!Ocelot 在博园里文章特别多,但是按照其中一篇文章教程,如果经验很少或者小白,是没法将程序跑向博主的结果. 因此总结下     参考多篇文章,终于达到预期效果. Oce ...

  9. HTML5 LocalStorage Demo

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  10. C# 依赖注入 & MEF

    之前面试有问道依赖注入,因为一直是做客户端的发开发,没有接触这个,后边工作接触到了MEF,顺便熟悉一下依赖注入 详细的概念解释就不讲了,网上一大把,个人觉着依赖注入本质是为了解耦,方便扩展 依赖注入的 ...