python - 如何一次循环遍历两个列表并将一个列表中的值替换为另一个列表?
问题描述
我有两个列表列表(a 和 b)
它们每行只有 2 个索引。
a
(50,000 行)如下所示:
|name|age|
|----|---|
|Dany|021|
|Alex|035|
作为列表列表,如下所示:
[['Dany', '021'],['Alex','035'], etc...]
b
(2000 行)如下所示:
|name|age|
|----|---|
|Paul| |
|Leon| |
作为列表列表,如下所示:
[['Paul', ''],['Leon',''], etc...]
问题:我想同时遍历a
和b
- 对于 的每次迭代a
,如果a[0]
在 中b[0]
,我想将相应的添加a[1]
到b[1]
中。
用通俗的话来说,我想通过浏览我的列表来将年龄添加到我b
的列表a
中,检查名称是否在a
列表中,如果是,则获取相应的年龄并将其添加b
到相应名称的列表中。
我尝试了一个嵌套循环(遍历 b 并且对于每次迭代,遍历a
以检查 at 的迭代中是否存在任何迭代at )a
,但在那之后就一直迷路。a[0]
b
b[0]
for row in b[1:]: # Excluding the headers
b_name = row[0]
b_age = row[1]
for row in a[1:]:
if b_name in row[0]:
b_age = row[1]
else:
b_age = ''
问题是我最终只得到一个值b_age
,但应该有 2000 个唯一b_age
值?
解决方案
使用列表,您可以:
a = [['Dany', '021'],['Alex','035'], ['Paul', '060'],['Leon','070']]
b = [['Paul', ''],['Leon','']]
for i, b_item in enumerate(b):
for a_item in a:
if b_item[0]==a_item[0]:
b[i] = a_item
break
print(b)
输出:
[['Paul', '060'], ['Leon', '070']]
推荐阅读
- node.js - 无服务器框架上的 serverless.yml 文件是什么?
- c++ - 用int_fastN_t代替intN_t好不好
- python - 如何修复 Ubuntu 20.04 中的 Octave 符号包错误?
- airflow - 气流 - DAG 完整性测试 - sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 没有这样的表:变量
- sql - 从列中选择子字符串,但每条记录都有不同的模式
- td-engine - 如何在 tdengine 中插入超出 keep 限制的时间戳
- php - 如何在使用 HTMLPurifier 去除脚本标签时允许所有 CSS?
- python - 如何使用现有模型和迁移恢复 Django 项目的转储数据库备份?
- linux - 裸盒中的 ubiformat 给出超时
- javascript - 试图消除延迟