一.字典(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(字典无极坑)的更多相关文章

  1. python 全栈开发,Day7(元组转换,列表以及字典的坑,集合,关系测试,深浅copy,编码补充)

    一.元组转换 数字 tu = (1) tu1 = (1,) print(tu,type(tu)) print(tu1,type(tu1)) 执行输出: 1 <class 'int'>(1, ...

  2. day07——数据类型补充、坑、二次编码

    day07 数据类型补充 str 首字母大写:capitalize() name = 'alex' name1 = name.capitalize() print(name1) 每个单词首字母大写:t ...

  3. Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑

    Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑 1.数据类型总结: 可变,不可变,有序,无序 (1)可变的数据类型:list dict set (2)不可变的数据类型: ...

  4. 第二周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 ...

  5. python简单入门

    一. 初识python. 1. 认识计算机 CPU(大脑) 3GHZ + 内存(DDR4) + 主板 + 电源(心脏)+ 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 80MB/s 操作系统 windo ...

  6. is == id 的用法;代码块;深浅copy;集合

    1 内容总览 is == id 用法 代码块 同一代码块下的缓存机制 (字符串驻留机制) 不同代码块下的缓存机制 (小数据池) 总结 集合(了解) 深浅copy 2 具体内容 id is == # i ...

  7. 学习2:内容# 1.while # 2.字符串格式化 # 3.运算符 # 4.编码初始

    目录 1.while循环 2.字符串格式化 3.运算符 4.编码初始 1.while循环 while -- 关键字 (死循环) if 条件: 结果 while 条件: 循环体 while True: ...

  8. python 07 数据类型

    目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...

  9. 百万年薪python之路 -- 基础数据类型的补充

    基础数据类型的补充 str: 首字母大写 name = 'alexdasx' new_name = name.capitalize() print(new_name) 通过元素查找下标 从左到右 只查 ...

随机推荐

  1. 《图解设计模式》读书笔记8-1 Observer模式

    目录 示例程序 程序类图 程序 角色和类图 角色 类图 思路拓展 可复用性 Observer的顺序 MVC模式 Observer模式 Observer模式即观察者模式,该模式中,被观察者的状态发生变化 ...

  2. 007/Docker(一)

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口. Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行, ...

  3. PPT制作,数据图等画图

    1. mathcad  画图简单不错 2.三维图 matlab不错 3.PPT  学术ppt,美观明了,思路清晰,数据可视化 学术PPT: http://mp.weixin.qq.com/s/TPYW ...

  4. 解决MarkDown打开出现:awesomium web-brower framework This view has crashed

    当在windows 8 以上操作系统安装markdown 的时候,可能会出现这样的错误 解决方法: 官网链接:http://markdownpad.com/faq.html#livepreview-d ...

  5. AtCoder Beginner Contest 133 -D — Rain Flows into Dams

    (https://atcoder.jp/contests/abc133/tasks/abc133_d) 思路:每座山为2Xi,每个坝为Ai.已知Ai,求出2Xi. 根据已知的X1,则可分别求出X2-n ...

  6. [常用类]时间内Date、SimpleDateFormat、Calendar类

    Date类的概述是util包下的,不能导入sql包的.* 类 Date 表示特定的瞬间,精确到毫秒. *构造方法 * public Date() * public Date(long date) 如果 ...

  7. 小白学Python(15)——pyecharts 绘制树形图表 Tree

    Tree-基本示例 import json import os from pyecharts import options as opts from pyecharts.charts import P ...

  8. JVM调优 dump文件怎么生成和分析

    1.获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: - ...

  9. char 指针如何判断字符串需要输出长度

    先上代码: #include <stdio.h> #include <string.h> ] = "; int func1(const char *ip) { pri ...

  10. 自定义django中间件

    自定义中间件 第一步:在根目录创建路径Middle/m1.py(注意如果是python2的话Middle下要有__init__.py文件,不然会报找不到模块错误) m1.py的内容: # -*- co ...