嵌套 ?

一系列字典存储在列表or列表作为值存储在字典or字典中套字典


1. 字典列表

alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}
aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
print(alien)

这样手动一个一个输入太费劲,让其自动生成多个:

aliens = []
# 生成30个
for alien_number in range(30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)
# 显示前5个
for alien in aliens[:5]:
print(alien)

但此时生成的数量是很多了,可都具有一样的特征,怎么办呢?

for alien in aliens[0:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['point'] = 10
elif alien['color'] == 'yellow':
alien['color'] = 'red'
alien['speed'] = 'fast'
alien['point'] = 15

通过切片修改部分外星人的特征,就可生成具有不同特征的外星人。

2. 在字典中存储列表

# 存储披萨的信息
pizza = {
'crust': 'thick',
'toppings': ['mushrooms', 'extra cheese'],
}
# 概述所点的披萨
print("You ordered a " + pizza['crust'] + "-crust pizza with the following toppings:")
for topping in pizza['toppings']:
print(topping)

多个键值对时:

favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print("\n" + name.title() + "'s favorite languages are: ")
for language in languages:
print("\t" + language.title())

运行结果:

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

但有的键只对应一个值,用are表示就有点不妥,可以对此作进一步改进:

for name, languages in favorite_languages.items():
if len(languages) == 1:
print("\n" + name.title() + "'s favorite languages is " + languages[0].title() + ".") # 打印出一个键对应一个值的情况
else:
print("\n" + name.title() + "'s favorite languages are: ")
for language in languages:
print("\t" + language.title())

3. 字典中存储字典

# 存储两个用户各自的一些信息
users = {
'mary': {
'first': 'albert',
'last': 'mary',
'location': 'princeton',
},
'bary': {
'first': 'maria',
'last': 'bary',
'location': 'paris',
}
}
for username, user_info in users.items():
full_name = user_info['first'] + ' ' + user_info['last']
location = user_info['location'] print("\nUsername: " + username)
print('\tFull name: ' + full_name.title())
print('\tLocation: ' + location.title())

运行结果:

Username: mary
Full name: Albert Mary
Location: Princeton Username: bary
Full name: Maria Bary
Location: Paris

字典的学习3——嵌套——Python编程从入门到实践的更多相关文章

  1. 字典的学习2——参考Python编程从入门到实践

    遍历字典 1. 遍历所有键值对 eg1: user_0 = { 'username': 'efermi', 'first': 'enrico', 'last': 'fermi',}for key, v ...

  2. 字典的学习1——参考Python编程从入门到实践

    字典:从汉语词意的角度理解,字典就是一个工具书,可以查找某个字.词.成语等的详细解释,字与解释相对应,而Python中字典则是一些列键和值相对应. Python中,字典放在花括号{键:值}中,eg: ...

  3. Python编程从入门到实践笔记——字典

    Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...

  4. 入门python:《Python编程从入门到实践》中文PDF+英文PDF+代码学习

    入门python推荐学习久负盛名的python入门书籍<Python编程从入门到实践>. 书中涵盖的内容是比较精简的,没有艰深晦涩的概念,最重要的是每个小结都附带有"动手试一试& ...

  5. 《python编程从入门到实践》读书实践笔记(一)

    本文是<python编程从入门到实践>读书实践笔记1~10章的内容,主要包含安装.基础类型.函数.类.文件读写及异常的内容. 1 起步 1.1 搭建环境 1.1.1 Python 版本选择 ...

  6. 《Python编程从入门到实践》_第十章_文件和异常

    读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...

  7. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  8. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

  9. python编程从入门到实践 alien invasion 项目源码

    现在上传一个 python编程从入门到实践 alien invasion 项目源码 以供大家学习参考 跟官方版本可能不太一样,因为是自己写的 也算是给新手一个参考 我用的环境是pycharm 可能需要 ...

随机推荐

  1. Emmet语法规则

    HTML速写之Emmet语法规则 Emmet-写HTML/CSS快到飞起 在前端开发的过程中,最费时间的工作就是写 HTML.CSS 代码.一堆的标签.属性.括号等,头疼.这里推荐一个Emmet语法规 ...

  2. curl获得cookie数据<转>

    CURL *curl; CURLcode res; struct curl_slist *headers = NULL; curl_global_init(CURL_GLOBAL_ALL); curl ...

  3. Numpy中ndim、shape、dtype、astype的用法

    本文链接:https://blog.csdn.net/Da_wan/article/details/80518725本文介绍numpy数组中这四个方法的区别ndim.shape.dtype.astyp ...

  4. go语言读写文件

    package main import ( "fmt" "io/ioutil" "os" ) func main() { filename ...

  5. 悟空CRM(基于jfinal+vue+ElementUI的前后端分离的开源CRM系统)

    https://www.jfinal.com/share/1591 官网:http://www.5kcrm.com 官网:http://www.72crm.com 论坛:http://bbs.72cr ...

  6. linux下如何制作initramfs镜像?

    1. 准备文件 加入已经准备好了所有文件在/home/initrd-base目录下 2. 在内核中指定/home/initramfs-base目录 General setup -> (/home ...

  7. 图像处理代码举例(C++、MATLAB、OpenCV)

    一.C中用数组存图像信息,下标索引: pbTag[y*newWidth+x] 见:https://www.cnblogs.com/wxl845235800/p/11149853.html HRESUL ...

  8. 使用AWS Lambda,API Gateway和S3 Storage快速调整图片大小

    https://www.obytes.com/blog/2019/image-resizing-on-the-fly-with-aws-lambda,-api-gateway,-and-s3-stor ...

  9. flutter 中的搜索条实现

    import 'package:flutter/material.dart'; import 'package:flutter_app/SearchBarDemo.dart'; void main() ...

  10. java连接数据库失败:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

    说一下我的情况: 在测试环境中运行没有任何问题,但是导出war包之后,就将war包上传到线上服务器的webapps目录下,然后启动Tomcat,等待Tomcat将上传的war包解压(此时Tomcat没 ...