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

简介: 最近重温Python基础语法,一道练习题巩固下列表、字典、循环。给定下面两个列表 attributes 和 values,要求针对 values 中每一组子列表 value,输出其和 attributes 中的键对应后的字典,最后返回字典组成的列表,请分别用一行和多行条件循环语句,来实现这个功能

最近重温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 函数和列表推导式(一行)

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 列表中的每个子列表(包含对应值的列表)合并,这样就可以方便地创建出每个属性和值对应的字典。

相关文章
|
7天前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
164 1
|
8天前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
55 1
|
8天前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
71 1
|
8天前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
154 0
|
8天前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
68 0
|
19天前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
227 101
|
9天前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
17天前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
存储 Python
python字典中删除键值的方法
python字典中删除键值的方法
333 0
|
存储 JSON JavaScript
Python字典和JSON字符串相互转化方法
【2月更文挑战第18天】
470 3

推荐镜像

更多