一.字典(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. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_1_并发与并行

    并发,相当于 一个人吃两个馒头,吃一口这个再吃一口另外一个.这里是cpu一会执行任务1,一会又执行任务2 并行,相当于两个人 吃两个馒头,各自吃各自的,这样速度就会快

  2. UI自动化之js\jquery的应用

    js\jquery的应用,有很多难以定位到的,可以通过js或者jquery来处理 目录 1.js 2.jquery 1.js 1.1js有5种定位,最后execute_script(js)来执行js ...

  3. 【ABAP系列】SAP ABAP WS_DELIVERY_UPDATE 修改数量、过账日期并发货过账

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP WS_DELI ...

  4. 编译的时候出现"/usr/bin/ld: cannot find -lz

    编译的时候出现"/usr/bin/ld: cannot find -lz"错误,需要安装zlib-dev这个包,在线安装命令为:apt-get install zlib1g-dev ...

  5. mooc-IDEA 收藏位置和文件--003

    六.IntelliJ IDEA -收藏位置和文件(类/函数) 1.收藏自己喜欢的文件---代码 添加一个Favorites列表 定义名称 Help->Find Action... 选择Add t ...

  6. 腾讯视频的手机端的地址和PC端的地址是不一样的

    腾讯视频的手机端的地址和PC端的地址是不一样的,所以使用iframe的时候记得要使用手机端的地址

  7. BZOJ 4552(二分+线段树+思维)

    题面 传送门 分析 此题是道好题! 首先要跳出思维定势,不是去想如何用数据结构去直接维护排序过程,而是尝试二分a[p]的值 设二分a[p]的值为x 我们将大于x的数标记为1,小于等于x的数标记为0 则 ...

  8. InvalidMappingException提示Could not parse mapping document错误的解决方法

    转自:http://www.itzhai.com/invalidmappingexception-could-not-parse-mapping-document-prompt-the-wrong-s ...

  9. Python Paramiko模块使用

    1 执行远程命令 #!/usr/bin/python import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_polic ...

  10. 在数据库中分析sql执行性能

    SET STATISTICS PROFILE ON SET STATISTICS IO ON SET STATISTICS TIME ON GO /*--SQL脚本开始*/ SELECT * FROM ...