Python利用列表、字典和zip函数处理数据

最近重温Python基础语法,一道练习题巩固下列表、字典、循环

给定下面两个列表 attributes 和 values,要求针对 values 中每一组子列表 value,输出其和 attributes 中的键对应后的字典,最后返回字典组成的列表,请分别用一行和多行条件循环语句,来实现这个功能

attributes = ['name', 'dob', 'gender']
values = [['jason', '2000-01-01', 'male'], 
['mike', '1999-01-01', 'male'],
['nancy', '2001-02-01', 'female']
]# expected output:
[{'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'}, 
{'name': 'mike', 'dob': '1999-01-01', 'gender': 'male'}, 
{'name': 'nancy', 'dob': '2001-02-01', 'gender': 'female'}]

使用 enumeratefor 循环(多行)

使用 enumerate 来迭代属性名列表,同时索引值列表。

result = []
for value in values:dict1 = {}  # 创建一个空字典for index, item in enumerate(attributes):dict1[item] = value[index]  # 将属性名作为键,对应的值作为值result.append(dict1)  # 将生成的字典添加到结果列表中
print("result1", result)

反向使用 enumerate(多行)

类似于第一种,但在值列表上使用 enumerate,然后从属性列表中索引。

result2 = []
for value in values:dict2 = {}  # 创建一个空字典for index, item in enumerate(value):dict2[attributes[index]] = item  # 使用值的索引从属性列表中获取对应的键result2.append(dict2)  # 将生成的字典添加到结果列表中
print("result2", result2)

使用 zip 函数和列表推导式(一行)

使用 zip 函数结合列表推导式

result3 = [dict(zip(attributes, value)) for value in values]
print("result3", result3)

zip 函数

zip 函数在 Python 中用于将多个迭代器(如列表、元组)的元素打包成一个个元组,然后返回由这些元组组成的一个迭代器。

使用 zip 时,它会从每个提供的迭代器中依次取出一个元素,将它们组合成一个新的元组,并将这个新的元组作为结果的一部分返回。当最短的输入迭代器被耗尽时,zip 函数会停止生成更多的元组。

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']# 使用zip将两个列表的元素配对
zipped = list(zip(list1, list2))  # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]# 我们也可以通过解压缩的方式还原列表
numbers, letters = zip(*zipped)
print(list(numbers))  # 输出:[1, 2, 3]
print(list(letters))  # 输出:['a', 'b', 'c']

zip 函数用于将 attributes 列表(包含键的列表)和 values 列表中的每个子列表(包含对应值的列表)合并,这样就可以方便地创建出每个属性和值对应的字典。

作者:花花木较瘦
链接:https://juejin.cn/post/7376620206338998306

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

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

相关文章

今日份动态规划学习(二维01背包+01背包变形)

目录 P1877 [HAOI2012] 音量调节 P1877 [HAOI2012] 音量调节 题解:一个入门级别的01背包问题,首先就是为什么能看出是01背包,因为只有两种状态,要不增大音量,要不减小音量,和01背包的选与不选非常近似。但…

next.js 的几种渲染方式

静态生成 (Static Generation)、服务器端渲染 (Server-Side Rendering) 和客户端渲染 (Client-Side Rendering) 是在构建 web 应用时常用的三种渲染策略。它们各自有不同的使用场景和优缺点。下面详细介绍它们的使用场景、差异和适用的情况。 静态生成 (Static Generation) 特…

探索SQL:从基础到高级的全面入门教程

SQL(Structured Query Language,结构化查询语言)是关系数据库管理系统中用于操作和查询数据的标准语言。它在数据管理和分析中扮演着至关重要的角色,无论是初学者还是有经验的开发者,都需要熟练掌握SQL的基本概念和高级功能。本文将从基础入门开始,逐步深入介绍SQL的语法…

酱菜产业:传承美味,点亮生活

酱菜,这道深受人们喜爱的传统美食,以其独特的风味和营养价值,点亮了我们的日常生活。酱菜产业作为美食文化的重要组成部分,正以其独特的魅力,吸引着越来越多的消费者。 酱菜产业的赵总说:酱菜的制作过程&am…

C++结合OpenCV进行图像处理与分类

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

Oracle中unique索引的作用是啥

在Oracle数据库中,UNIQUE索引是一种特殊的索引,它除了提供常规索引的快速检索功能外,还强制其索引列或列组合的值必须是唯一的。以下是UNIQUE索引的主要作用: 数据完整性:UNIQUE索引确保表中没有两行具有相同的索引列…

数据库(24)——外键约束

概念 外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。 具有外键的表称为子表,关联的表称为父表。 语法 添加外键 CREATE TABLE 表名( 字段名 数据类型, .. [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主…

CGS与MGS的矩阵正交化-C语言实现

格拉姆-施密特正交化和改进的格拉姆-施密特正交化 格拉姆-施密特正交化CGS 数学公式 代码实现: 过程版 矩阵运算实现的难点在于每次运算都是一个向量,需要for循环进行,会带来运算时在代码中的复杂,进而难以理解代码的过程 Q矩阵…

软件测试——白盒测试

目录 学习视频来源:1.01什么是白盒测试(Av809778070,P1)_哔哩哔哩_bilibili 1.语句覆盖 2.判定覆盖 3.条件覆盖 4.判定条件覆盖 5.条件组合覆盖 6.路径覆盖 7.基本路径覆盖 学习视频来源:1.01什么是白盒测试(Av809778070,P1)_哔哩哔哩_bilibili …

正则表达式运用

已经写了表达式,下一步就是匹配字符串得到结果 使用matcher的源码(匹配)普通方法,find(寻找)合适的代码,看字符串是否匹配成功 是否可以匹配上 匹配么,匹配就留下,fin…

基于SVD的点云配准

前言 为了更加深入透彻的理解点云配准,所以打算从头实现一次配准的过程,从关键点提取、特征提取、对应关系确定、SVD确定变换矩阵,一步一步完成。 首先介绍一下配准过程中用到的一些函数 1. ISS3D关键点提取 具体来说,它使用ISS(Intrinsic Shape Signatures)关键…

Go 语言基础

1. 理解语句和标记 Go程序由一系列语句组成,而Go语句由一系列标记组成。这里,标记指的是语句中任何有意义的对象,包括如下。 关键字:用于特殊 Go 功能的保留字。操作符和标点符号:用于数学运算或执行特殊操作的符号。标识符:用于标识诸如存储位置或执行操作的函数等事物的…

热线系统自主可控改造:构建安全、高效的服务新纪元

一、引言:热线系统的重要性与挑战 在信息化时代,热线系统作为企业与客户沟通的关键渠道,承载着重要的信息传递和服务功能。然而,随着技术的不断进步和网络安全威胁的日益严峻,传统的热线系统面临着诸多挑战。这些挑战…

性能工具之 JMeter 常用组件介绍(三)

文章目录 一、常用组件介绍二、Sampler:取样器三、Controller:控制器(逻辑控制器)四、Pre Processor:预处理五、Post Processor:请求之后的处理六、Assertions:断言七、Timer:定时器八、Test Fragment:片段九、Config Element:配置…

STM32 SPI驱动读取LSM6DSRTR

提示:通过SPI驱动读取传感器数据 文章目录 前言一、LSM6DSRTR二、配置步骤1.配置SPI2.引入 LSM驱动库3.结果 总结 前言 制作一个倾角传感器,通过SPI读取LSM6DSRTR的加速度数据转换为角度,不用IIC的原因是考虑IIC通讯的协议过于繁琐&#xff…

springCloudAlibaba之服务熔断组件---sentinel

sentinel组件学习 sentinel学习sentinel容错机制使用代码方式进行QPS流控-流控规则初体验使用SentinelResource注解进行流控使用注解方式 sentinel学习 服务雪崩 服务雪崩效应:因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。 …

心链10----查询修改加入队伍业务实现

心链 — 伙伴匹配系统 接口设计 查询队伍列表 :::success 分页展示队伍列表,根据名称、最大人数等搜索队伍 P0,信息流中不展示已过期的队伍 从请求参数中取出队伍名称等查询条件,如果存在则作为查询条件不展示已过期的队伍(根…

docker实战命令大全

文章目录 1 环境准备1.1 移除旧版本Docker1.2安装工具包1.3配置docker yum源 2 安装最新docker2.1 设置开机自启docker2.2配置加速器 3 实操-镜像3.1搜索镜像3.2下载镜像3.3查看镜像3.4 删除镜像 4 实操-容器4.1运行nginx容器4.2 查看容器4.3启动容器4.5关闭容器4.6查看容器日志…

功能强大的开源数据中台系统 DataCap 2024.03.5 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台,建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件:https://github.com/devlive-commun…

2个不同node版本的前端项目,用到的一个node版本管理工具nvm,可一键切换node版本

背景: 对于需要在电脑运行2个不同的前端项目,但是使用的node版本不同,为了快捷切换和管理node版本,所以需要用到一个非常方便的工具,那就是下边的nvm,一个命令就可以非常方便的切换你想要的node。 1、下载…