python中的嵌套
嵌套:将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。既可以在列表中嵌套字典,也可以在字典中嵌套列表,甚至在字典中嵌套字典。
一、列表中嵌套字典
1)一般创建方式:
student_A ={'name':'Allen','age':'14','grade':'8'}
student_B ={'name':'Jack','age':'12','grade':'6'}
student_C ={'name':'Lucy','age':'13','grade':'7'}
student_D ={'name':'polo','age':'14','grade':'8'}
#上述四行,创建了4个字典,每个字典代表一个学生
students=[student_A,student_B,student_C,student_D]#将上述4个学生放名为students的列表中
for student in students: #遍历students列表
print(student) #打印每个学生
print("\n")
2)批量创建同类型的字典,比如游戏中很多同类型小兵
#创建更多的同类型的字典
ghosts=[] #创建一个空ghosts列表
for ghost_number in range(10): #创建10个ghost,注意range(10)是从0-9
new_ghost={'name':'rubbish','life':'10','speed':'1'} #同类型的名字rubbish,颜色为green,生命力为10,速度为1
ghosts.append(new_ghost) #append()是将创建的new_ghost放到列表ghosts最后 for ghost in ghosts: #遍历创建的ghosts列表
print(ghost) #打印ghosts中的每个元素,即10个同类型的ghost print("Total number of ghosts:"+str(len(ghosts))) #打印ghosts列表中元素的个数,len()求元素个数,str()转为字符串
3)同类型的字典,可通过循环,及切片进行增、删、改等操作。
for ghost in ghosts[0:3]:
if ghost['color'] == 'green':
ghost['color'] = 'yellow'
ghost['speed'] = 2
ghost['life'] = 5
for ghost in ghosts:
print(ghost)
运行如果:

二、字典中嵌套列表
比如在实际生活中,描述菜单,如果使用列表,只能存储菜肴的配料;但如果使用字典,就不仅可在其中包含配料列表,还可包含其他有关描述。
如下示例,存储了菜单的两方面信息:菜肴类型和配料列表。
其中的配料列表是一个与键 'toppings' (佐料)相关联的值。
要访问该列表,使用字典名和键 'toppings' ,就像访问字典中的其他值一样,这将返回一个配料列表,而不是单个值
1)嵌套一个列表
# 存储所点菜单的信息
menu = { # 定义一个菜单字典
'style': 'sichuan', #定义菜单的类型,四川菜
'toppings': ['salt', 'sugar','vinegar','Sichuan Pepper'] # 定义一个佐料的列表,包含盐、糖、醋、花椒
} #存储了有关顾客所点菜肴的信息
# 概述所点的菜单
print("You ordered a " + menu['style'] + "-style menu " +
"with the following toppings:")
for topping in menu['toppings']:
print("\t" + topping)
2)嵌套多个列表
favor_languages = {
'jack': ['python', 'ruby'],
'sarah': ['c','C++'],
'edward': ['ruby', 'go'],
'polo':['c#','java']
}
for name, languages in favor_languages.items():
print("\n" + name.title() + "'s favorite languages are:")
for language in languages:
print("\t" + language.title())
三、在字典中存储字典
网站有多个用户,每个都有独特ID(或用户名),可以在字典中将用户名作为键,再将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。,对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,并访问与每个用户名相关联的信息字典
#在字典中嵌套字典
users = { #创建一个users的字典,字典中有两个关键字(id)lucyb和merryb,
'lucyb': {'firstname': 'lucy','lastname':'Bush','location': 'califorlia'},
'merryb':{'firstname':'merry','lastname':'Biden','location':'San Francisco'}
} # lucyb和merryb又分别为两字典,各自有三个关键字,firstname,lastname和location for username, user_info in users.items(): #遍历字典uers的每一项
print("\nUsername: " + username)
full_name = user_info['firstname'] + " " + user_info['lastname']
location = user_info['location']
print("\tFull name: " + full_name.title())
print("\tLocation: " + location.title())
运行结果:

python中的嵌套的更多相关文章
- python中的嵌套类
python中的嵌套类 在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下.动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问 ...
- python中函数嵌套、函数作为变量以及闭包的原理
嵌套函数: python允许创建嵌套函数.也就是说我们可以在函数里面定义函数,而且现有的作用域和变量生存周期依旧不变. 例子: #encoding=utf-8 def outer(): name ...
- Python 中异常嵌套
在Python中,异常也可以嵌套,当内层代码出现异常时,指定异常类型与实际类型不符时,则向外传,如果与外面的指定类型符合,则异常被处理,直至最外层,运用默认处理方法进行处理,即停止程序,并抛出异常信息 ...
- python中的嵌套类(内部类调用外部类中的方法函数)
在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一 ...
- python中for嵌套打印图形
# 打印出九九乘法表 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 4 * 1 = 4 4 * 2 = 8 4 * 3 = 1 ...
- python的while嵌套 99乘法表 三角形和正方形
python的99乘法表 num1=1 while num1<=9 : num2 = 1 while num2 <=num1 : print (str(num2)+"X" ...
- Python中的global和nonlocal
在Python中,一个变量的scope范围从小到大分成4部分:Local Scope(也可以看成是当前函数形成的scope),Enclosing Scope(简单来说,就是外层函数形成的scope), ...
- Python中Numpy ndarray的使用
本文主讲Python中Numpy数组的类型.全0全1数组的生成.随机数组.数组操作.矩阵的简单运算.矩阵的数学运算. 尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便. 定义数 ...
- python中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇
函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义.先观察以下的案例: ...
随机推荐
- Spring IOC---Bug处理
1. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit jupiter' failed to discover ...
- javaweb项目对https的配置01
1.准备证书生成 a.进入到jdk下的bin目录(如果配置了Java的环境,可以直接在cmd命令窗口中直接输入如下命令) keytool -v -genkey -alias tomcat -keyal ...
- sql注入mysql注入
#跨库查询及应用思路 information_schema表特性,记录数据库名.表名.列名对应表 information_schema.schemata:存储所有数据库名 schema_name:数据 ...
- JavaScript 里的 'this' 的一般解释
本文旨在帮助自己和大家理解 JS 里的 this, 翻译.整理并改写自本人关注的一个博主 Dmitri Pavlutin,原文链接如下: https://dmitripavlutin.com/gent ...
- 多线程笔记(学习尚硅谷java基础教程)
一.基本概念: 程序: 是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程: 是程序的一次执行过程,或是正在运行的一个程序.是一个动态的过程:有它自身的产生.存在和 ...
- Linux磁盘分区管理-LVM回顾
LVM(逻辑分区管理)的几个概念:PV(物理卷),VG(卷组),LV(逻辑卷),PE(物理区域),LE(逻辑区域),其中PV, VG, LV 三者之间的关系如下图 : 物理存储介质:这里指系统的存储设 ...
- 半吊子菜鸟学Web开发 -- PHP学习2-正则,cookie和session
1正则表达式 1.1基本的匹配字符串 $p = '/apple/'; $str = "apple banna"; if (preg_match($p, $str)) { echo ...
- redis之 主从复制和哨兵(一)
一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, ...
- Java有没有goto?
goto是Java中的保留字,暂时还不是Java的关键字.
- C++各种输入
https://blog.csdn.net/qq_29735775/article/details/81165882 1.cin 2.cin.get() 3.cin.getline() 4.getli ...