嵌套:将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。既可以在列表中嵌套字典,也可以在字典中嵌套列表,甚至在字典中嵌套字典。

一、列表中嵌套字典

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中的嵌套的更多相关文章

  1. python中的嵌套类

    python中的嵌套类 在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下.动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问 ...

  2. python中函数嵌套、函数作为变量以及闭包的原理

    嵌套函数: python允许创建嵌套函数.也就是说我们可以在函数里面定义函数,而且现有的作用域和变量生存周期依旧不变. 例子: #encoding=utf-8 def outer():    name ...

  3. Python 中异常嵌套

    在Python中,异常也可以嵌套,当内层代码出现异常时,指定异常类型与实际类型不符时,则向外传,如果与外面的指定类型符合,则异常被处理,直至最外层,运用默认处理方法进行处理,即停止程序,并抛出异常信息 ...

  4. python中的嵌套类(内部类调用外部类中的方法函数)

    在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一 ...

  5. 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 ...

  6. python的while嵌套 99乘法表 三角形和正方形

    python的99乘法表 num1=1 while num1<=9 : num2 = 1 while num2 <=num1 : print (str(num2)+"X" ...

  7. Python中的global和nonlocal

    在Python中,一个变量的scope范围从小到大分成4部分:Local Scope(也可以看成是当前函数形成的scope),Enclosing Scope(简单来说,就是外层函数形成的scope), ...

  8. Python中Numpy ndarray的使用

    本文主讲Python中Numpy数组的类型.全0全1数组的生成.随机数组.数组操作.矩阵的简单运算.矩阵的数学运算. 尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便. 定义数 ...

  9. python中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇

    函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义.先观察以下的案例: ...

随机推荐

  1. 架构师成长之路也该了解的新一代微服务技术-ServiceMesh(上)

    架构演进 发展历程 我们再来回顾一下架构发展历程,从前往后的顺序依次为单机小型机->垂直拆分->集群化负载均衡->服务化改造架构->服务治理->微服务时代 单机小型机:采 ...

  2. 羽夏看Win系统内核——消息机制篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  3. Rust极简教程

    目录 简介 特性 特征 用途 安装 核心组件 常用命令 基础语法 数据类型 标量类型 复合类型 示例 条件语句 循环 输出&输入 输出 输出花括号 输出非基础类型 输入 所有权 切片 结构体 ...

  4. [MRCTF]XOR-无法生成反汇编的处理

    主程序,无法生成伪代码 由此分为两种方法即: 直接看反汇编 解决问题,尝试生成伪代码 硬啃汇编 输入与输出 判断输入长度是否为0x1B,其中al为eax的低8位 将输入的字符每个与当前字符所在下标异或 ...

  5. jQuery--基本过滤选择器

    1.基本过滤选择器介绍 基本过滤器: :first     获取数组中第一个元素 :last      获取数组中最后一个 :eq(selector) 获取指定索引 :gt(index)     大于 ...

  6. 哪些是重要的bean生命周期方法? 你能重载它们吗?

    有两个重要的bean 生命周期方法,第一个是setup , 它是在容器加载bean的时候被调用.第二个方法是 teardown  它是在容器卸载类的时候被调用. The bean 标签有两个重要的属性 ...

  7. AOP 有哪些实现方式?

    实现 AOP 的技术,主要分为两大类: 静态代理 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类, 因此也称为编译时增强: 编译时编织(特殊编译器实现) 类加载时编织( ...

  8. Spring常用的注入方式有哪些?

    Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 参考链接:Spring常用的三种注入方式

  9. vue中v-model 数据双向绑定

    表单输入绑定 v-model 数据双向绑定,只能应用在input /textare /select <div id="app"> <input type=&quo ...

  10. 学习zabbix(三)

    前言: 学习zabbix之前,不得不了解的是SNMP协议 SNMP:简单网络管理协议(Simple Network Protocol) Snmp由两部分组成,监控端和被监控端 监控模式: 主动模式:N ...