python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...

a85bcb8987087800e7067181014c5b34.gif

文 | 猿天罡

前言

前两篇文章,我们学习了Python字典的基本用法和遍历字典的三种方式。

为了让小伙伴们不耗费多余的注意力,我们举的例子都尽可能的简单,不信你回去看看,字典键对应的值都是基本数据类型(字符串、数字等)。

其实,字典里键对应的值可以很复杂。

我们可以在字典中存储列表,在列表中存储字典,在字典中存储字典等等。

Python中几乎所有的数据类型,都可以存进字典里。

学习不是一日之功,需摆正心态,持之以恒,希望小伙伴们对学习一门语言抱有基本的耐心

下面我们来开心地学习吧。

1.在字典里存储列表

1.1字典里不全是列表

笔者在大学的时候,需要学习四门基础专业课。

course = ['数据结构', '计算机网络', '计算机组成原理', '操作系统']

如果我们声明一个学生字典,则专业课列表应该在学生字典之中。

student = { 'name': 'kelvin', 'age': 18, 'course': ['数据结构', '计算机网络', '计算机组成原理', '操作系统']}

注:也可以用双引号包裹字符串(别的文章可不会提醒的这么详细)

这种情况下,要想访问课程列表,和我们讲的字典访问方法一毛一样(基础挺重要的):student['course']。

下面我们来打印这个学生的信息。

# 概述学生基本信息print('姓名:', student['name'], '年龄:', student['age'])print('课程信息如下:')for course in student['course']: print("" + course)

运行结果如下:

d06e714e5f08343f2fb93573a02fffad.png

说明(看得懂代码可以跳过):

首先,我们创建了一个学生字典,字典里存储了学生的姓名、年龄和课程信息。姓名和年龄都是基本数据类型(一个字符串另一个数字),课程是列表结构。

然后,我们通过字典访问方法字典['键'],一下子就把姓名和年龄拿到并输出了。

最后,我们通过student['course']拿到了一个课程列表,但直接输出格式太不好看了,所以我们对其进行了遍历,依次输出学生要上的课程。

1.2字典里全是列表

还有一种字典里存列表的情况:键对应的值全是列表。

遇到这种情况心里可以偷着乐,因为循环遍历的时候格式会很好看(后文会有解释)。

学校老师需要每个学生的课程信息(因为有的人选课会不一样)。

这个时候把学生姓名做键(实际情况下是用学号,姓名会重复),以学生课程列表为值可以组成字典。

courses = { 'kelvin': ['数据结构', '计算机网络', '计算机组成原理', '操作系统'], 'vicky': ['xx经济学', '西方经济学', '统计学', '发展经济学']}

我们把多个学生的课程表打印输出。

for name, course in courses.items(): print(name + '同学所学课程:') for c in course: print("" + c)

因为每个键对应的都是列表,所以需要再使用一个for循环来遍历学生课程列表。

解释(看得懂代码可以跳过):

首先,使用外层for循环,依次将courses字典里的键和值分别赋值给变量name和course。

然后,name对应的值是个简单的字符串,所以我们直接打印输出了。

最后,遍历course列表,格式化地打印学生所学课程。

再注:字典里不全是字典也可以用双层循环,只不过我们需要加个if判断,如果值是列表才能进入到内层循环。

2.在字典里存储字典

字典里存储字典很像俄罗斯套娃。

027cb8d64414f719a210774e92827b55.png

循环(打开)一层字典后,面对的还是字典,真是让人惊喜又惊喜。

和在字典中存储列表一样,在字典里存储字典也有两种情况。

聪明的小伙伴已经猜到了:在字典里不全是字典和在字典里全是字典。

看着让人有点头晕(建议看下前面的小标题清醒一下)。

因为在字典里不全是字典比较简单(不理解的欢迎私信),所以我们重点讲讲在字典里全是字典的情况。

学校需要学生信息表(不是学生所上课程信息)。

如果要用字典来存储的话,可以这样。

students = { 'kelvin': { 'age': 18, 'course': ['数据结构', '计算机网络', '计算机组成原理', '操作系统'] }, 'vicky': { 'age': 19, 'course': ['xx经济学', '西方经济学', '统计学', '发展经济学'] }}

可以看到,外层students字典里面存储的依然是以学生姓名为键,学生其他信息为值的字典。

更过分地是学生其他信息里竟然还有个学生列表。

看我们怎么处理这些数据。

for name, student in students.items(): print("姓名:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jquery Highcharts 参数配置说明

chart: renderTo 图表的页面显示容器 defaultSeriesType 图表的显示类型(line,spline, scatter, splinearea bar,pie,area,column) margin 上下左右空隙 events 事件 click function(e) {} load function(e) {} xAxis:yAxis: 属性…

linux如查看是否安装了mysql_linux中如何查看mysql是否安装

linux中查看mysql是否安装的方法:1、mysql的守护进程是mysqld如果已经安装则:[rootlocalhost ~]# service mysqld start启动 MySQL: [确定]如果没有安装则:[rootlocalhost ~]# service mysqld startmysqld:未被识别的服务2、通过查看服务是否…

新鲜的宣传册设计

原文地址:http://www.goodfav.com/brochure-designs-9367.html 宣传画册设计印刷在品牌以及企业形象建设疏导方面扮演着非常重要的角色。宣传册设计是理想的营销材料。他们将帮助您建立有意向目标受众,提供有价值的信息。如果没有企业宣传册,…

mysql json mybatis_mybatis支持json,Spring boot配置

mysql5.7版本以后支持原生json格式,基于Spring boot进行配置说明。mybatis支持mysql的json格式mysql-connector,mysql的驱动版本要大于等于5.1.40,否则json字段查询会发生乱码。继承BaseTypeHandler自定义一个json类型处理器,放到…

【ACM】nyoj_103_A+BII_201307291022

AB Problem II时间限制:3000 ms | 内存限制:65535 KB 难度:3描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A B. A,B must be positive. 输入 The first line of the inp…

mysql门派年龄最大的人_目前活着年龄最大的人

每逢老人过生日,子女都会祝他长命百岁,但事实上,长命百岁能过百岁的人少之又少。那么大家知道中国现在活着的最长寿的人是谁吗?下面让小编为大家揭晓答案吧!比正式的历史文献记载最长寿者年长14岁中新网曾对这一名黎巴嫩妇女进行报道&#x…

汉字和utf编码转换

package Sambo;public class URLtoUTF8 {//将汉字转换为编码public static String toUtf8String(String s) {StringBuffer sb new StringBuffer();for (int i 0; i < s.length(); i) {char c s.charAt(i);if (c > 0 && c < 255) {sb.append(c);} else {byt…

python关于字符串下面说法错误的是_关于字符串下列说法错误的是

【判断题】药品的两重性是指防治作用和副作用?【单选题】“ab””c”*2 结果是: (1.3分)【判断题】所有药都是一天吃三次。【填空题】若 a1,b2,c3,d0,则表达式a>b and b>c or ab【单选题】关于Python中的复数,下列说法错误的是 (1.3分)【单选题】后遗效应 的典型药物案例…

mysql inputoutput_PHP:同时使用INPUT和OUTPUT参数(不“ INOUT”)调用MySQL存储过程

从PHP&#xff0c;我想在MySQL中调用存储过程。该过程采用输入 和 输出参数- 而不是 “ INOUT” 参数。对于一个简单的示例&#xff0c;说我在MySQL中具有以下存储过程&#xff1a;DELIMITER $$DROP PROCEDURE IF EXISTS test_proc$$CREATE PROCEDURE test_proc(in input_param…

解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题

最近一个项目中&#xff0c;使用号称下一代构建工具的Gradle构建项目。 使用中发现一个问题&#xff0c;Gradle从中央库下载的jar文件在系统的其它目录&#xff0c;使用gradle eclipse添加Eclipse支持时&#xff0c;jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到To…

mysql 执行计划_mysql执行计划

执行计划使用explain sql查询。1、 构造数据usecoshaho002;drop table if existsinfo;create tableinfo(idint primary keyAUTO_INCREMENT,namevarchar(32),agetinyint,sexvarchar(8),addressvarchar(32),phonevarchar(32),birthday date,descriptionvarchar(128));alter table…

linux 添加编程环境变量配置

在用VS 2008使用boost库时候&#xff0c;只需要在VS的配置里面设定好boost的include和lib路径&#xff0c;编写程序就会自动查找和链接。 linux下使用boost开发&#xff0c;在哪里设置呢&#xff1f; 对所有用户有效&#xff0c;需修改文件/etc/profile; 对个人有效则修改文件~…

python中cock什么意思_[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析...

[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析(2013-07-03 11:31:56)标签&#xff1a;转载Vina是在Autodock4基础上改进的算法&#xff0c;相比autodock4而言&#xff0c;具体优势&#xff1a;准确&#xff0c;并行计算(官网数据)&#xff1a;AutoDockVina is a…

Entity Framework 4.1 : 贪婪加载和延迟加载

这篇文章将讨论查询结果的加载控制。 EF4.1 允许控制对象之间的关系&#xff0c;当我们进行查询的时候&#xff0c;哪些关系的数据将会被加载到内存呢&#xff1f;所有相关的对象都需要吗&#xff1f;在一些场合可能有意义&#xff0c;例如&#xff0c;当查询的实体仅仅拥有一个…

python数据结构编程_写给Python编程高手之 数据结构

python视频教程栏目介绍Python编程需要注意的关键点。如何在列表&#xff0c;字典&#xff0c;集合中根据条件筛选数据案例&#xff1a;如何在下列列表data中筛选出大于0的数data [1, -1, 2, 3, 4, 7]复制代码使用filter函数&#xff0c;第一个参数为一个函数&#xff0c;也可…

初步学习pg_control文件之八

接前文 初步学习pg_control文件之七 继续 看&#xff1a;catalog_version_no 代码如下&#xff1a; static void WriteControlFile(void) {.../** Initialize version and compatibility-check fields*/ControlFile->pg_control_version PG_CONTROL_VERSION;ControlFile-…

python编写下载器可暂停_Python编写一个优美的下载器

本文实例为大家分享了python编写下载器的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 #!/bin/python3# author: lidawei# create: 2016-07-11# version: 1.0# 功能说明&#xff1a;# 从指定的URL将文件取回本地#################################################…

fork()调用使子进程先于父进程被调度

由于内核使用写时复制机制&#xff0c;fork之后父子进程是共享页表描述符的&#xff0c;如果让父进程先执行&#xff0c;那么有很大几率父进程会修改共享页表指向的数据&#xff0c;那么内核此时必须给父进程分配并复制新的页表供父进程修改使用&#xff0c;那么如果子进程被创…

修改页面后获得flag_简单的CTF-从JS中获取flag

本文是一篇从合天网安实验室进行实验操作的笔记&#xff0c;一次非常简单地从JS中获取到flag的操作。1. 进入题目页(10.1.1.219:20123)看到一段话&#xff0c;还有一句很明显的提示语句“The evil url is the passkey”&#xff0c;翻译出来就是损坏的url就是flag。下面的英文…

文本框获取和失去焦点默认值问题

1. HTML控件<input id"txtName" type"text" value"默认值" /> <script src"script/jquery-1.7.1.min.js" type"text/javascript"></script><script type"text/javascript">$(function ()…