Python_005(字典无极坑)
一.字典(dict)
1.字典的定义格式:dic{key1:value1,key2,value2}
:这里面key是唯一的,保存的时候,根据key计算一个内存地址,然后将key-value保存在这个地址中,这种算法叫做hahs算法,
这个key意味是不可变的,为了能够准确找到计算内存地址而规定的;value没有要求,可以保存任意类型的数据;
:dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片,只能通过key来获取dict中的数据;
二.字典的增删改查
1.增加
a.添加格式:dic[key] = 元素
:直接添加,如果dic中没有出现这个key,就会新增一个key-value的组合进dic中
:如果dic中已经有了这个key,就会直接覆盖上一个key对应的value的值!
b.第二种添加的格式:dic.setdefault(key):若没有出现过key值,默认会自动创建一个key:None;
:如果已经出现key值,那么setdefault将不起作用;
:setdefault执行了两个步骤:
(1).首先判断原来的字典中有没有这个key,如果没有,执行新增;如果有则不起作用
(2).用这个key去字典中查询,返回查到的结果;
代码展示:
dic = {"疾风剑豪":"亚索","暴走萝莉":"拉克丝",}
ret = dic.setdefault("疾风剑豪","诺手")
print(dic)
print(ret)
#输出结果:{'疾风剑豪': '亚索', '暴走萝莉': '拉克丝'}
亚索
注意:这里ret的返回值是亚索,而不是诺手!
关于setdefault
2.删除
a:ret = dic.pop(指定key值)指定key值删除,有返回值,返回value;
b:del dic[key值]这个没有返回值;
3.修改
newdic.update(dic):把newdic中的内容更新到dic中,如果key重名,则修改替换,如果不存在key,则新增;
4.查
print(dic.get("key"):可以通过key来获取value值,如果key不存在,返回None
print(di.get("key","value")):也可以添加一个value值;
三.字典的相关操作
1.dic.keys()可以拿到所有的key,返回key的集合,像是列表,但不是列表,是一个可迭代对象;
:可以进行迭代循环:for key in dic.keys():print(key)打印所有的key值
:for value in dic.values():print(value)打印所有的value值
:for item in dic.items():print(item)打印所有的元素,以元组的形式出现;
2.解构:把一个元组里面的元素赋值给前面的变量,这种方法叫做解构;
例如:a,b = 1,2 print(a) a为1 若a = 1,2 print(a) a为(1,2)
推导公式:for k,v in dic.items():print(k,v):得到是一个个元组构成的可迭代对象,元组里面是(key,value);
讲解:你for item in dic.items(): print(item)你拿到的是由key和value组成的元组,元组可以进行结构k,v=(key,value)
所以for k,v in dic.items();你就单独拿出了key值和value值;
3.字典的嵌套
代码展示:
dic = {
"name" : "国际章",
"工资" : 18000,
"age" : 18,
"human" : {
"name1" : "汪峰",
"工资1" : 10,
"age" : 356
},
"son" : [
{"name3" : "王贤柏", "age" : 19},
{"name4" : "吴祖蓝", "age" : 119}
]
}
print(dic["human"]["工资1"])
print(dic["son"][0]["name3"])
#输出结果:10
王贤柏
字典的嵌套
Python_005(字典无极坑)的更多相关文章
- python 全栈开发,Day7(元组转换,列表以及字典的坑,集合,关系测试,深浅copy,编码补充)
一.元组转换 数字 tu = (1) tu1 = (1,) print(tu,type(tu)) print(tu1,type(tu1)) 执行输出: 1 <class 'int'>(1, ...
- day07——数据类型补充、坑、二次编码
day07 数据类型补充 str 首字母大写:capitalize() name = 'alex' name1 = name.capitalize() print(name1) 每个单词首字母大写:t ...
- Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑
Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑 1.数据类型总结: 可变,不可变,有序,无序 (1)可变的数据类型:list dict set (2)不可变的数据类型: ...
- 第二周Python笔记 数据类型 列表 字典
列表,拉锁式儿合并. [ [a,b] for a,b in zip(list1,list2)] #最笨的 a=[1,2,3,4,5] b=[2,3,4,5,6] d=[] for i in range ...
- python简单入门
一. 初识python. 1. 认识计算机 CPU(大脑) 3GHZ + 内存(DDR4) + 主板 + 电源(心脏)+ 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 80MB/s 操作系统 windo ...
- is == id 的用法;代码块;深浅copy;集合
1 内容总览 is == id 用法 代码块 同一代码块下的缓存机制 (字符串驻留机制) 不同代码块下的缓存机制 (小数据池) 总结 集合(了解) 深浅copy 2 具体内容 id is == # i ...
- 学习2:内容# 1.while # 2.字符串格式化 # 3.运算符 # 4.编码初始
目录 1.while循环 2.字符串格式化 3.运算符 4.编码初始 1.while循环 while -- 关键字 (死循环) if 条件: 结果 while 条件: 循环体 while True: ...
- python 07 数据类型
目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...
- 百万年薪python之路 -- 基础数据类型的补充
基础数据类型的补充 str: 首字母大写 name = 'alexdasx' new_name = name.capitalize() print(new_name) 通过元素查找下标 从左到右 只查 ...
随机推荐
- 《图解设计模式》读书笔记8-1 Observer模式
目录 示例程序 程序类图 程序 角色和类图 角色 类图 思路拓展 可复用性 Observer的顺序 MVC模式 Observer模式 Observer模式即观察者模式,该模式中,被观察者的状态发生变化 ...
- 007/Docker(一)
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口. Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行, ...
- PPT制作,数据图等画图
1. mathcad 画图简单不错 2.三维图 matlab不错 3.PPT 学术ppt,美观明了,思路清晰,数据可视化 学术PPT: http://mp.weixin.qq.com/s/TPYW ...
- 解决MarkDown打开出现:awesomium web-brower framework This view has crashed
当在windows 8 以上操作系统安装markdown 的时候,可能会出现这样的错误 解决方法: 官网链接:http://markdownpad.com/faq.html#livepreview-d ...
- AtCoder Beginner Contest 133 -D — Rain Flows into Dams
(https://atcoder.jp/contests/abc133/tasks/abc133_d) 思路:每座山为2Xi,每个坝为Ai.已知Ai,求出2Xi. 根据已知的X1,则可分别求出X2-n ...
- [常用类]时间内Date、SimpleDateFormat、Calendar类
Date类的概述是util包下的,不能导入sql包的.* 类 Date 表示特定的瞬间,精确到毫秒. *构造方法 * public Date() * public Date(long date) 如果 ...
- 小白学Python(15)——pyecharts 绘制树形图表 Tree
Tree-基本示例 import json import os from pyecharts import options as opts from pyecharts.charts import P ...
- JVM调优 dump文件怎么生成和分析
1.获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: - ...
- char 指针如何判断字符串需要输出长度
先上代码: #include <stdio.h> #include <string.h> ] = "; int func1(const char *ip) { pri ...
- 自定义django中间件
自定义中间件 第一步:在根目录创建路径Middle/m1.py(注意如果是python2的话Middle下要有__init__.py文件,不然会报找不到模块错误) m1.py的内容: # -*- co ...