一、字典的嵌套

有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你
可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

1、字典与列表的嵌套

字典alien_0包含一个外星人的各种信息,但无法存储第二个外星人的信息,更别说屏幕上
全部外星人的信息了。如何管理成群结队的外星人呢?一种办法是创建一个外星人列表,其中每
个外星人都是一个字典,包含有关该外星人的各种信息。例如,下面的代码创建一个包含三个外
星人的列表:

alien_0 = {'color': 'green', 'points': 5}   #外星人1号字典
alien_1 = {'color': 'yellow', 'points': 10} #外星人2号字典
alien_2 = {'color': 'red', 'points': 15}      #外星人3号字典
aliens = [alien_0, alien_1, alien_2]        #将每个外星人字典做一位一个元素放置到列表中
for alien in aliens:   #遍历外星人列表
     print(alien)

结果:

{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}

例子:添加30个外星,并输出前五个外星人的信息

aliens = []
set_number =30
point_number=5
for alien_number in range(set_number):
         new_alien={"color":"green","point":point_number,"speed":"slow"}
         aliens.append(new_alien)
         point_number= point_number+2
for alien in aliens[:5]:
         print(alien)

结果:

{'color': 'green', 'point': 5, 'speed': 'slow'}
{'color': 'green', 'point': 7, 'speed': 'slow'}
{'color': 'green', 'point': 9, 'speed': 'slow'}
{'color': 'green', 'point': 11, 'speed': 'slow'}
{'color': 'green', 'point': 13, 'speed': 'slow'}

2、字典中嵌套列表

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():

if  len( languages) >1: #此处languages已经被默认为了 值
               print("\n" + name.title() + "'s favorite languages are:")

else :

print("\n" + name.title() + "'s favorite languages is:")
       for language in languages:
             print("\t" + language.title())

结果:

Jen's favorite languages are:
Python
Ruby
Sarah's favorite languages are:
C
Phil's favorite languages are:
Python
Haskell
Edward's favorite languages are:
Ruby
Go

3、字典中嵌套字典

users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
},
}
for username, user_info in users.items():
      print("\nUsername: " + username)
      full_name = user_info['first'] + " " + user_info['last']
      location = user_info['location']
      print("\tFull name: " + full_name.title())
      print("\tLocation: " + location.title())

结果:

Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie
Full name: Marie Curie
Location: Paris

注意:表示每位用户的字典的结构都相同,虽然Python并没有这样的要求,但这使得嵌
套的字典处理起来更容易。倘若表示每位用户的字典都包含不同的键, for循环内部的代码将
会非常复杂。

转载于:https://www.cnblogs.com/jokerwang/p/9254918.html

Python学习之路day02——007字典的嵌套相关推荐

  1. python学习之路day02

    一..pyc是什么? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...

  2. Python学习之路—2018/7/14

    Python学习之路-2018/7/12 3.功能开发 3.3 设计博客首页 博客首页中最重要的就是中间的文章区域,所以我首先把文章区域设计出来,一开始并没有数据,如果用orm添加或者直接在数据库添加 ...

  3. Python学习之路—2018/6/20

    Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...

  4. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  5. Python学习之路—2018/6/27

    Python学习之路-2018/6/27 1.多表操作 添加记录 添加多对多关系 方式一:传入Author对象 book = Book.objects.get(bid=1) gy = Author.o ...

  6. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

  7. Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)

    Python学习笔记:列表.字典与集合解析(List, Dict and Set Comprehensions) 1.列表解析 最受喜爱的Python语言特性.过滤一个集合的元素生成一个新的列表. 一 ...

  8. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴.... 转载于:https://www.cnblogs.com/chobit/p/6163287.html

  9. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

  10. python学习之路0x00

    Python学习之路0x00 在学习python之前,要知道什么是python? python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,与c语言不同, c语言要编译后才能执行.而 ...

最新文章

  1. 单链表的前K个的逆序输出
  2. IOS 消息机制(NSNotificationCenter)
  3. SAN,NAS区别的联系
  4. Docker中运行Springboot jar时的变量传递
  5. 不使用加减乘除符号计算加法
  6. 工作激发了我的热情,并不断激励着我” - SAP成都研究院Jerry Wang
  7. xampp for linux
  8. opencv基本的图像处理函数
  9. java里面object和string的相互转换
  10. hdu1263 简单模拟
  11. MES系统是什么?MES系统的操作流程是怎样?
  12. 安卓apk反编译教程
  13. 在浏览器中清除缓存和 Cookies
  14. java 实现 指派_Activiti 开发案例之动态指派任务
  15. 世纪佳缘推智能设备 是衰退迹象 还是第二春征兆?
  16. 用8051单片机编程由P1.0和P1.1引脚分别输出周期为1ms和500us的方波
  17. 售前工作感悟:思想决定售前深度!
  18. 【Vivado】 [Place 30-574] 时钟使用普通IO时的报错解决办法
  19. 新梦想计算机等级考试2016,2016年计算机等级一级考试试题及解析
  20. Mac系统下无法删除文件夹

热门文章

  1. C++ 任意进制相互转换
  2. 三十二 、K8s审计
  3. HCIE Security 防火墙反病毒 备考笔记(幕布)
  4. Linux磁盘管理详解
  5. 802.11介质访问控制——CSMA/CD协议详解
  6. 华三 h3c Vlan静态路由
  7. DHCP中继原理与配置
  8. SourceTree Win10 安装不成功解决过程记录
  9. 迭代总结(随时更新)
  10. openssl 升级到OpenSSL 1.0.1g 修复HEARTBEATS漏洞