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

Python嵌套循环匹配列表对应元素生成XML文件问题

解决Python生成对应索引匹配的合作伙伴XML文件问题

问题说明

需要生成包含约1000行合作伙伴数据的XML文件,要求将list_a、list_b、list_c、list_d的同索引元素一一对应,每个<Partners>节点封装一组对应索引的元素,但当前嵌套循环的写法会生成大量重复组合,无法得到预期结构。

原数据与错误代码

原始列表数据

list_a = ['aaa', 'bbb', 'ccc']
list_b = ['ddd', 'eee', 'fff']
list_c = ['ggg', 'hhh', 'iii']
list_d = ['jjj', 'kkk', 'lll']

错误的嵌套循环代码

for item_a in list_a:  
  print('<Partners>')
  print('  <ExternalCode>', end='')
  print(item_a, end='')
  print('</ExternalCode>')
  for item_b in list_b:
    print('  <ShortName>', end='')
    print(item_b, end='')
    print('</ShortName>')
    for item_c in list_c:
      print('  <Name>', end='')
      print(item_c, end='')
      print('</Name>')
      for item_d in list_d:
        print('  <PartnerGroupCode>', end='')
        print(item_d, end='')
        print('</PartnerGroupCode>')
        print('</Partners>')

正确解决方案

问题出在嵌套循环会遍历所有列表的元素组合,而我们需要的是按索引一一对应。可以用zip()函数把四个列表按索引打包,然后遍历每一组打包后的元素:

list_a = ['aaa', 'bbb', 'ccc']
list_b = ['ddd', 'eee', 'fff']
list_c = ['ggg', 'hhh', 'iii']
list_d = ['jjj', 'kkk', 'lll']

# 用zip打包同索引元素,遍历每一组
for a, b, c, d in zip(list_a, list_b, list_c, list_d):
    print('<Partners>')
    print(f'  <ExternalCode>{a}</ExternalCode>')
    print(f'  <ShortName>{b}</ShortName>')
    print(f'  <Name>{c}</Name>')
    print(f'  <PartnerGroupCode>{d}</PartnerGroupCode>')
    print('</Partners>')

生成的XML结果

运行上述代码会生成符合预期的结构:

<Partners>
  <ExternalCode>aaa</ExternalCode>
  <ShortName>ddd</ShortName>
  <Name>ggg</Name>
  <PartnerGroupCode>jjj</PartnerGroupCode>
</Partners>
<Partners>
  <ExternalCode>bbb</ExternalCode>
  <ShortName>eee</ShortName>
  <Name>hhh</Name>
  <PartnerGroupCode>kkk</PartnerGroupCode>
</Partners>
<Partners>
  <ExternalCode>ccc</ExternalCode>
  <ShortName>fff</ShortName>
  <Name>iii</Name>
  <PartnerGroupCode>lll</PartnerGroupCode>
</Partners>

处理1000行数据的注意事项

如果要生成1000行数据,确保四个列表的长度一致,zip()会以最短的列表长度为准。若列表长度可能不一致,可使用itertools.zip_longest()来处理,不过需要提前确定缺省值的填充逻辑(比如空字符串)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:34:52