嵌套 ?

一系列字典存储在列表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. docker运行puppeteer出现defucnt僵尸进程

    其实这是docker的一个bug,就是在运行前加--init即可,注意这个在mac中没有只在linux上有. docker run --init -d ..... 具体内容参见:https://sta ...

  2. MySql数据库转设计文档(mysql-font工具和sql语句导出)

    一.工具导出 1.使用的是MySQL-Front工具,这个工具使用非常方便,尤其是导出数据的时候,几百万的数据一两分钟就导完了,推荐使用. MySQL-Front下载(只有3.93M):http:// ...

  3. python socketpool:通用连接池(转)

    简介 在软件开发中经常要管理各种“连接”资源,通常我们会使用对应的连接池来管理,比如mysql数据库连接可以用sqlalchemy中的池来管理,thrift连接可以通过thriftpool管理,red ...

  4. MyBatis 示例之存储过程

    存储过程在数据库中比较常见,虽然大多数存储过程比较复杂,但是使用 MyBatis 调用时,用法都一样,因此我们这一节使用一个简单的存储过程来了解 MyBatis 中存储过程的使用方法. 基本准备 存储 ...

  5. SpringCloud-Eureka配置instanceId显示IP

    eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: preferIpAddress: tr ...

  6. eclipse中导入spring-boot框架的jar包方法

    如下代码引入了spring-boot的包 package openresty; import java.io.IOException; import java.security.GeneralSecu ...

  7. Oracle insert大量数据经验之谈

    在很多时候,我们会需要对一个表进行插入大量的数据,并且希望在尽可能短的时间内完成该工作,这里,和大家分享下我平时在做大量数据insert的一些经验. 前提:在做insert数据之前,如果是非生产环境, ...

  8. 使用java 执行ping命令

    借助 Runtime.getRuntime().exec() 可以运行一个windows的exe程序如图,使用java运行 ping 192.168.2.106,返回这样的字符串   1 2 3 4 ...

  9. 使用postman调用webservice接口

    通过wsdl查看接口地址: 填入xml报文: 配置相应的headers:

  10. unsupported media type 415

    jquery  ajax请求报错解决方案: 两点: data: JSON.stringify(obj), contentType:"application/json", 完整pos ...