今天可变学习的主要内容是 :

本节主要内容:

1.字典的简单介绍

2.字典增删改查和其他操作

3.字典的嵌套

一.字典的简单介绍

字典(dict)是pytho中唯一的一个映射类型.它是以{}括起来的键值对组成的.在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在这个地址中.

这种算法被称为hash算法,所以,切记,在dict中储存的key-value中的key必须是可hash的.

如果你搞不懂什么是hash,暂时可以这样记,可以改变的都是不可哈希的.那么可哈希的意味着不可变.这个是为了能准确的计算内存地址二规定的.

已知的可哈希(不可变)的数据类型:int,str,tuple,bool

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

dict的语法:

{key1:value1,key2:value2....}

注意: key必须是不可变(可哈希)的.value没有要求.可以保存任意类型的数据

dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序暴君的.而hash表示不可连续的.所以不能进行切片操作,他只能通过key来获取dict中的数据

二.字典的增删改查和其他相关操作

1.增加

dic ={}

dic["name"] = "周润发"

# 如果dict中没有出现这个可以,就会新增一个key-value的组合进dict

print(dic)

#如果dict组合没有出现过这个key-value.可以通过setdefault设置默认值

dic.setdefault('李嘉诚') #也可以往里面设置值.

dic.setdefault('李嘉诚','房地产')   #如果dict中已经存在了.那么setdefault将不会起作用

print(dic)

2.删除

dict.pop(key):删除指定的键值对()有返回值

dict.popitem():随机删除

dict.clear():清空字典中的所有内容

del dict[key]:删除指定内容(没有返回值)

3.修改

dic{key:value}

dic[key] = value1

dic.update(dic1)

#把dic1的内容更新到dic中.如果key重名.则修改替换,如果不存在key,则新增

4.查询

查询一般用key来查找具体的数据.

dic[key]  如果当可以不存在,会报错  KeyError

dic.get(key)当key不存在的时候不会报错.默认返回值None

dic,get(key,"没有")  两个参数,若第一个参数不存在.返回第二个参数作为默认值,如果存在直接返回value

setdefault()的判断流程:

1.先检测是否存在key,如果存在,就修改相对应的值,如果不存在就新增键值对

2.根据你给的key把value查询出来

例如:

 dic = {"jay":"周杰伦"}
ret = dic.setdefault("jay_jj","林俊杰")
print(dic, ret)
lst = [11,22,33,44,55,66,77,88,99]
dic = {"key1":[], "key2": []}
for el in lst:
if el > 66:
dic['key1'].append(el)
else:
dic["key2"].append(el)
print(dic)
 lst = [11,22,33,44,55,66,77,88,99]
dic = {}
for el in lst:
if el > 66:
dic.setdefault("key1", []).append(el)
else:
dic.setdefault("key2", []).append(el)
print(dic)

5.其他相关操作

dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}

# print(dic.keys()) # 返回的内容像列表。但不是列表
# for k in dic.keys(): # 可以迭代。 拿到的是每一个key
# print(k) # print(dic.values()) # 所有的value返回。 像列表。但不是列表
# for v in dic.values():
# print(v) # print(dic.items()) # 返回键值对。 (key, value)
# 遍历字典的最好的方案
# for k, v in dic.items(): # item是元组 (key, value)
# print(k, v) # 直接拿到key和value # 元组,可以进行解包
# a, b, c = (1, 2, 3) # 解构, 解包
#
# print(a, b) # 真正的字典的迭代
# 直接循环字典拿到的是key
# for k in dic:
# print(k)
# print(dic[k])

6.字典的嵌套

# 面向对象思想, 前端JSON 对象
wf = {
"name":"汪峰",
"age":42,
"hobby":"抢头条",
"代表作":["春天里","怒放的生命","北京 北京"],
"wife_now":{
'name':"章子怡",
"age":62,
"爱好":"打麻将"
},
"children": [{'id':1,"name":"汪涵"},{"id":2,"name":"汪才"}]
}
print(wf['wife_now']['爱好'])
# 汪峰的小儿子改名成 汪晓峰
wf['children'][1]['name'] = "汪晓峰"
print(wf)

  

python学习 day05打卡的更多相关文章

  1. Python学习day05 - Python基础(3) 格式化输出和基本运算符

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  2. python学习 day013打卡 内置函数

    本节主要内容: 内置函数: 内置函数就是python给你提供的.拿来直接用的函数,比如print,input等等.截止到python版本3.6.2 python一共提供了68个内置函数.他们就是pyt ...

  3. python学习 day09打卡 初识函数

    本节内容: 1.什么是函数 2.函数定义,函数名,函数体及函数的调用 3.函数的返回值 4.函数的参数 一.什么是函数 函数:对代码块和功能的封装和定义 定义一个事情或者功能.等到需要的时候直接去用, ...

  4. python学习 day06打卡

    今天学习的主要内容是: 一,小数据池 代码块的概念 python程序是由代码块构成的,一个代码块的文本作为python程序执行的单元. 代码块:一个模块,一个函数,一个类,甚至每一个command命令 ...

  5. Python学习 day04打卡

    今天学习的主要内容: 一,列表 1,列表的介绍 列表是python的基础数据类型之一,其他编程语音也有类似的数据类型.例如:JS 中的数组Java中的数组等等. 它是以[]括起来,每个元素用',隔开而 ...

  6. Python学习 day03打卡

    今天学习的主要内容: ppython的基本数据类型: 1. python基本数据类型回顾 2.int---数字类型 4.str---字符串类型 一.python基本数据类型 1. int==>整 ...

  7. python学习 day018打卡 反射

    本节主要内容: 1.isinstance,type,issubclass 2.区分函数和方法 3.反射(重点) 一.isinstance,type,issubclass issubclass():判断 ...

  8. python学习 day017打卡 类与类之间的关系

    本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...

  9. python学习 day016打卡 面向对象--成员

    本节主要内容: 1.类的成员 2.类的成员-变量 3.类的成员-方法 4.类的成员-属性 5.私有 一.类的成员: 能在类中写的内容就是类的成员. class 类名: #方法 def __init__ ...

随机推荐

  1. 20165215 实验一 Java开发环境的熟悉

    20165215 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...

  2. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  3. 远程服务调用RPC框架介绍,微服务架构介绍和RPC框架对比,dubbo、SpringClound对比

    远程服务调用RPC框架介绍,微服务架构介绍和RPC框架对比,dubbo.SpringClound对比 远程服务调用RPC框架介绍,RPC简单的来说就是像调用本地服务一样调用远程服务. 分布式RPC需要 ...

  4. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    elasticsearch启动时遇到的错误 问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144: 解决: 切换到root用户 执行命令: sysctl -w vm ...

  5. .net大型平台通过Nginx做负载均衡(Web层、中间服务层、DB层)

    .net平台下,我目前部署过的均衡负载有两种方式(iis7和Nginx),以下以Nginx为例讲解web层的均衡负载. 简介:Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx ...

  6. 利用yum搭建lamp环境并进一步创建博客

    用yum搭建lamp环境 第一.安装apache yum -y install httpd 第二.安装mariadb Yum -y mariadb mariadb-server 第三.安装php Yu ...

  7. Spring Aop 代理

    AOP 面向切面编程 底层就是 动态代理模式 代理模式是java中常用的设计模式. 特点为:  1 委托类和代理类有相同的接口,或共同的父类(保证使用一样的方法) 2 代理类为委托类负责处理消息,并将 ...

  8. opencv3.1线性可分svm例子及函数分析

    https://www.cnblogs.com/qinguoyi/p/7272218.html //摘自:http://docs.opencv.org/2.4/doc/tutorials/ml/int ...

  9. linux shell习题

    课件地址:https://wenku.baidu.com/view/bac2ff10f18583d0496459f3.html 1.测试环境变量:HOME,PWD,IFS等2.测试位置变量:$$,$# ...

  10. django创建app、在视图函数及url中使用参数、url命名、通过redirect实现网页路径跳转

    app用来实现一个独立的功能,视图一般都写在app的view.py中,并且视图的第一个参数永远是request,视图的返回值必须是HttpResponseBase对象或子类的对象. 创建一个app:f ...