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中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇
函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义.先观察以下的案例: ...
随机推荐
- Mybatis执行流程浅析
从三个主要的对象SqlSessionFactoryBuilder->SqlSessionFactory->SqlSession说起 inputStream = Resources.getR ...
- C# 杂七杂八知识点
本文源自在工作过程中一些比较容易混淆或者理解不太清晰的知识点进行整理备忘. sealed修饰符 当sealed关键字修饰类,该类不能被继承. 当sealed关键字修饰方法的时候,该方法不能在其子类中重 ...
- /proc/uptime参数的意义
有关/proc/uptime这个文件里两个参数所代表的意义: [root@app ~]#cat /proc/uptime 3387048.81 3310821.00 第一个参数是代表从系统启动到现在的 ...
- 羽夏看Win系统内核——结语
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- 麒麟系统开发笔记(二):国产麒麟系统搭建Qt开发环境安装Qt5.12
前言 开发国产应用,使用到银河麒麟V4,V10,本篇以V10记录,参照上一篇可安装V4.V7.V10三个版本,麒麟V4系自带了Qt,麒麟V10没有自带Qt,需要自己编译搭建环境. 银河麒麟V1 ...
- React优点?
声明式, 组件化, 一次学习, 随处编写. 灵活, 丰富, 轻巧, 高效
- Servlet的会话机制?
因为http协议是无状态协议,又称为一次性连接,所以webapp必须有一种机制 能够记住用户的一系列操作,并且唯一标示一个用户. Cookie: 又称为小饼干,实际就是使用一个短文本保存用户信息, 在 ...
- SpringBoot单元测试携带Cookie
由于我SpringBoot项目,集成了SpringSecurity,而Security框架使用Redis存储Session,所以,这里列出几个关键的类 org.springframework.sess ...
- 什么是 CAS?
CAS 是 compare and swap 的缩写,即我们所说的比较交换. cas 是一种基于锁的操作,而且是乐观锁.在 java 中锁分为乐观锁和悲观锁.悲观锁是将资源锁住,等一个之前获得锁的线程 ...
- spring-boot-learning-REST风格网站
什么是REST风格: Representational State Transfer :表现层状态转换,实际上是一种风格.标准,约定 首先需要有资源才能表现, 所以第一个名词是" 资源&qu ...