You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按关联id_nr打印两个相关Python列表的内容?

解决方法

你的问题出在嵌套循环里没做id匹配判断,每次遍历List_a的项后直接输出了整个List_b,导致结果不符合预期。这里给你两种可行的解决办法:

方法一:改进嵌套循环(简单直接)

在内部循环中增加id匹配的判断,只输出和当前List_a项id一致的List_b内容:

List_a = [(1, '2023-01-01', 'Groceries'), (2, '2023-01-02', 'IKEA')]
List_b = [(1, 'Bread', 20), (1, 'Milk', 10), (2, 'Chair', 125), (2, 'Sofa', 230), (2, 'Bed', 340)]

for a in List_a:
    # 输出List_a当前条目
    print(f"{a[0]}, {a[1]}, {a[2]}")
    # 仅输出与当前id匹配的List_b条目
    for b in List_b:
        if b[0] == a[0]:
            print(f"{b[0]}, {b[1]}, {b[2]}")

方法二:先分组List_b(适合大数据量)

如果List_b的数据量很大,嵌套循环的效率会偏低。可以先把List_b按id分组存储,之后直接通过id调取对应内容:

List_a = [(1, '2023-01-01', 'Groceries'), (2, '2023-01-02', 'IKEA')]
List_b = [(1, 'Bread', 20), (1, 'Milk', 10), (2, 'Chair', 125), (2, 'Sofa', 230), (2, 'Bed', 340)]

# 用defaultdict按id分组List_b
from collections import defaultdict
b_grouped = defaultdict(list)
for b in List_b:
    b_grouped[b[0]].append(b)

# 遍历输出
for a in List_a:
    print(f"{a[0]}, {a[1]}, {a[2]}")
    # 取出当前id对应的所有List_b条目并输出
    for b in b_grouped.get(a[0], []):
        print(f"{b[0]}, {b[1]}, {b[2]}")

两种方法运行后都会输出你需要的格式:

1, 2023-01-01, Groceries
1, Bread, 20
1, Milk, 10
2, 2023-01-02, IKEA
2, Chair, 125
2, Sofa, 230
2, Bed, 340

内容的提问来源于stack exchange,提问作者VirreJoj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:57:30