首页 > 解决方案 > 如何一次循环遍历两个列表并将一个列表中的值替换为另一个列表?

问题描述

我有两个列表列表(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...]

问题:我想同时遍历ab- 对于 的每次迭代a,如果a[0]在 中b[0],我想将相应的添加a[1]b[1]中。

用通俗的话来说,我想通过浏览我的列表来将年龄添加到我b的列表a中,检查名称是否在a列表中,如果是,则获取相应的年龄并将其添加b到相应名称的列表中。

我尝试了一个嵌套循环(遍历 b 并且对于每次迭代,遍历a以检查 at 的迭代中是否存在任何迭代at )a,但在那之后就一直迷路。a[0]bb[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值?

标签: pythonlistloopsiterationnested-loops

解决方案


使用列表,您可以:

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']]

推荐阅读