Python——第二章:字典的循环、嵌套、"解构"(解包)
字典进阶操作 -- 循环和嵌套
字典的循环
我们先看直接打印字典的样子,会分别对每对key:value进行打印,并使用,分隔他们
dic = {
"赵四": "特别能歪嘴",
"刘能": "老, 老四啊...",
"大脚": "跟这个和那个搞对象",
"大脑袋": "瞎折腾....",
}
print(dic)
#输出结果
{'赵四': '特别能歪嘴', '刘能': '老, 老四啊...', '大脚': '跟这个和那个搞对象', '大脑袋': '瞎折腾....'}
1. 可以用for
循环, 直接拿到key
for key in dic:
print(key,dic[key])
#输出结果
赵四 特别能歪嘴
刘能 老, 老四啊...
大脚 跟这个和那个搞对象
大脑袋 瞎折腾....
这里key
也不需要特殊指定,key
就代表其中的赵四、刘能、大脚、大脑袋
同样,对应的value
也能够通过dic[key]
拿到结果.
2. 希望把所有的key
全都保存在一个列表中
直接用字典命令dic.keys()
拿到key的值
print(dic.keys())
#输出结果
dict_keys(['赵四', '刘能', '大脚', '大脑袋'])
进而可以直接把他们塞进列表中
print(list(dic.keys())) # 列表拿到所有的key了
#输出结果
['赵四', '刘能', '大脚', '大脑袋']
3.希望把所有的value
全都保存在一个列表中
直接用字典命令dic.valus()
把value
都放在一个列表中
print(list(dic.values()))
#输出结果
4. 直接拿到字典中的key
和value
这里先扩展讲"解构"(解包)
"解构"(解包)是Python中提取打包数据结构(如元组、列表、集合和字典)元素的一种方法。下面是如何对这四种数据结构进行解包:
元组(Tuple):
tup = (1, 2, 3, 4) # 创建一个元组
a, b, c, d = tup # 解包元组
print(a) # 输出:1
print(b) # 输出:2
print(c) # 输出:3
print(d) # 输出:4列表(List):
lst = [1, 2, 3, 4] # 创建一个列表
a, b, c, d = lst # 解包列表
print(a) # 输出:1
print(b) # 输出:2
print(c) # 输出:3
print(d) # 输出:4集合(Set):
需要注意的是,集合是无序的,因此解包的结果可能不按照你预期的顺序给出(每次执行结果都不一样)。此外,集合元素不能是可变对象,如列表或字典。set_data = {'w', "x", "y", "z"} # 创建一个集合
a, b, c, d = set_data # 解包集合
print(a) # 随机输出一个,取决于集合的内部实现
print(b) # 同上
print(c) # 同上
print(d) # 同上 #执行结果
y
w
x
z字典(Dictionary):
解包字典的值
dict_data = {'name': 'Alice', 'age': 30} # 创建一个字典
a, b = dict_data.values() # 解包字典的值
print(a) # 输出:Alice
print(b) # 输出:30或者解包字典的键:
dict_data = {'name': 'Alice', 'age': 30} # 创建一个字典
key1, key2 = dict_data.keys() # 解包字典的键
print(key1) # 输出:name
print(key2) # 输出:age
说完"解构"(解包),我们在说一下这个dic.items()
命令效果
dic = {
"赵四": "特别能歪嘴",
"刘能": "老, 老四啊...",
"大脚": "跟这个和那个搞对象",
"大脑袋": "瞎折腾....",
}
print(dic.items()) #确定,dic.items()中只有两项元素
#输出结果
dict_items([('赵四', '特别能歪嘴'), ('刘能', '老, 老四啊...'), ('大脚', '跟这个和那个搞对象'), ('大脑袋', '瞎折腾....')])
通过使用dic.items()
再说结合for循环,通过解构原理,直接拿到key和value
for item in dic.items():
key,value = item
print(key,value)
#输出结果
赵四 特别能歪嘴
刘能 老, 老四啊...
大脚 跟这个和那个搞对象
大脑袋 瞎折腾....
最终,我们拿到最简化的版本(*重点记住)
for k, v in dic.items(): # 可以直接拿到字典的所有的key和value
print(k, v)
字典的嵌套
wangfeng = {
"name": "汪峰",
"age": 18,
"wife": {
"name": "章子怡",
"hobby": "演戏",
"assistant": {
"name": "樵夫",
"age": 19,
"hobby": "打游戏"
}
},
"children": [
{"name": "孩儿1", "age": 13},
{"name": "孩儿2", "age": 10},
{"name": "孩儿3", "age": 8},
]
}
查询:汪峰妻子的助手的名字
name = wangfeng['wife']['assistant']['name']
print(name)
#输出结果
樵夫
修改:给汪峰的第二个孩子加1岁
wangfeng['children'][1]['age'] = wangfeng['children'][1]['age'] + 1
print(wangfeng)
#输出结果
{'name': '汪峰', 'age': 18, 'wife': {'name': '章子怡', 'hobby': '演戏', 'assistant': {'name': '樵夫', 'age': 19, 'hobby': '打游戏'}}, 'children': [{'name': '孩儿1', 'age': 13}, {'name': '孩儿2', 'age': 11}, {'name': '孩儿3', 'age': 8}]}
Python——第二章:字典的循环、嵌套、"解构"(解包)的更多相关文章
- 简学Python第二章__巧学数据结构文件操作
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第六十七章:内部类、嵌套类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 【python基础语法】多重循环嵌套,函数(第6天课堂笔记)
1.什么是函数?函数有什么作用? 函数都是有特定功能的,都是由一些有特定功能的进行封装完成的 2.已经学过了哪些内置函数?分别有什么作用? print:输出 input:输入 type:查询数据类型 ...
- Python 第二章-列表和元组
第二章-列表和元组 2.0 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推. ...
- python第二章:数据类型--小白博客
标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...
- python第二章:控制流
变成实际上是一个过程的提现,每个过程都是有多个流程块组成. 比如:判断是否下雨的过程 1.布尔值 在第一章最后举例了比较操作后,最终返回的结果 True or False True 和 False是一 ...
- Python第二章-变量和数据类型
变量和数据类型 一.什么是变量,常量 思考:程序执行指的是什么? 对数据进行存储处理和计算,最终获得结果,这是程序执行的本质. 变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以 ...
- 第二章 控件架构与自定义控件详解 + ListView使用技巧 + Scroll分析
1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWindow将DecorView作为整个应用窗口的根V ...
- Python第二章(北理国家精品课 嵩天等)
一.深入理解Python语言 语法简洁 >13万第三方库 二.Python蟒蛇绘制 #PythonDraw.py import turtle turtle.setup(650,350,200,2 ...
随机推荐
- Flutter 编写收音机开源
之前写的一个 Flutter 收音机,支持桌面端和手机端,在https://www.cnblogs.com/imlgc/p/17536481.html ,写完之后就不怎么管了.后面陆陆续续有人邮件索要 ...
- mpi转以太网连接200PLC转以太网modbusTCP服务器通信配置方法
兴达易控200PLC转以太网modbusTCP服务器通信配置方法 产品简介 兴达易控PPI-ETH-XD1.0用于西门子S7-200/SMART S7-200PLC的以太网数据采集,非常方便构建生产管 ...
- 【RocketMQ】事务实现原理总结
RocketMQ事务的使用场景 单体架构下的事务 在单体系统的开发过程中,假如某个场景下需要对数据库的多张表进行操作,为了保证数据的一致性,一般会使用事务,将所有的操作全部提交或者在出错的时候全部回滚 ...
- ora2pg使用记录
ora2pg使用记录 前言 这篇文章是我在学习使用ora2pg过程中的学习记录,以便日后遗忘查阅: 诸君也可跟随我的步伐了解一下ora2pg,或可移步如下官方文档参考学习:Ora2Pg : Migra ...
- Python shape+size详解
import cv2 from PIL import Image # pic.JPG 图片的路径 img = cv2.imread("pic.JPG",-1) print(&quo ...
- 关于如何解决visualc++6.0打开文件闪退的一种方式(附带解决输入法无法显示)
这里我把VisualC++6.0安装程序和filetool分享在我的网盘里面了 网盘下载QAQ 链接:https://pan.baidu.com/s/1azSMX_cOKgb64WT7-gTdbQ?p ...
- 【XXE实战】——浅看两道CTF题
[XXE实战]--浅看两道CTF题 上一条帖子[XXE漏洞]原理及实践演示对XXE的一些原理进行了浅析,于是写了两道CTF题巩固一下,顺便也记录一下第一次写出来CTF.两道题都是在BUU上找的:[NC ...
- Vue之仿百度搜索框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 全面掌握胶囊网络:从基础理论到PyTorch实战
本文全面深入地探讨了胶囊网络(Capsule Networks)的原理.构建块.数学模型以及在PyTorch中的实现.通过本文,读者不仅能够理解胶囊网络的基础概念和高级数学原理,还能掌握其在实际问题中 ...
- CF48C [The Race]
Problem 题目简述 现有 \(n\) 个已经加过油的加油站,如果当前剩余油量 \(< 10\) 升,则会加 \(x\) 升的油. 初始状态下,有 \(x\) 升油.每个加油站之间的距离为 ...