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

一、列表中嵌套字典

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. 程序设计基础·Java学习笔记·面向对象(下)

    Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...

  2. 和风天气WebApi使用教程

    1.首先进入和风天气开发平台,点击右上角的注册进行注册 和风天气开发平台 2.填写注册用的邮箱和密码完成注册,可能还需要手机号,按提示注册完成即可. 3.从和风天气开发平台右上角进入控制台,输入你刚刚 ...

  3. (bzoj4408)[FJOI2016]神秘数(可持久化线段树)

    (bzoj4408)[FJOI2016]神秘数(可持久化线段树) bzoj luogu 对于一个区间的数,排序之后从左到右每一个数扫 如果扫到某个数a时已经证明了前面的数能表示[1,x],那么分情况: ...

  4. 第九届蓝桥杯 C组 Java 等腰三角形

    目录 题目 解答 题目 题目描述 本题目要求你在控制台输出一个由数字组成的等腰三角形. 具体的步骤是: 1. 先用1,2,3,...的自然数拼一个足够长的串 2. 用这个串填充三角形的三条边.从上方顶 ...

  5. Linux下离线安装docker与fastDFS

    一.Linux下离线安装Docker 基础环境 1.操作系统:CentOS 7 2.Docker版本:docker-19.03.9.tgz 官方下载地址(打不开可能需要科学-上网) 3.官方参考文档: ...

  6. 什么是通知Advice?

    特定 JoinPoint 处的 Aspect 所采取的动作称为 Advice.Spring AOP 使用一个 Advice 作为拦截器,在 JoinPoint "周围"维护一系列的 ...

  7. mysql的cpu飙升原因及处理

     Mysql 批量杀死进程 正常情况下kill id,即可,但是有时候某一异常连接特别多的时候如此操作会让人抓狂,下面记录下小方法: use information_schema; select co ...

  8. yum下载安装mysql服务

    1.下载mysql源码 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2.安装mysql源 yum ...

  9. Citus 分布式 PostgreSQL 集群 - SQL Reference(手动查询传播)

    手动查询传播 当用户发出查询时,Citus coordinator 将其划分为更小的查询片段,其中每个查询片段可以在工作分片上独立运行.这允许 Citus 将每个查询分布在集群中. 但是,将查询划分为 ...

  10. ros工作空间中文件夹结构

    ROS 编译系统 catkin 详解 ros系统学习之Catkin编译系统 ROS--catkin编译系统.package.xml和CMakeList.txt文件 1.build:编译空间 存放CMa ...