嵌套 for 循环获取精确列表项 - Python

问题描述 投票:0回答:2

我正在尝试编写一段代码来构建 XML 文件,该文件必须包含大约 1000 行有关合作伙伴的数据。

我想从 list_a 第一项中获取循环,并将其与 list_b 的第一项进行匹配。第二个接着第二个,依此类推。

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

这是我尝试过的代码。无法从循环中找到正确的中断,因此代码可以给出正确的 XML 文本。

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

代码必须提供如下 XML 文本:

<Partners>
  <ExternalCode>String 33</ExternalCode>
  <ShortName>String 34</ShortName>
  <Name>String 35</Name>
  <PartnerGroupCode>String 36</PartnerGroupCode>
</Partners>
<Partners>
  <ExternalCode>String 37</ExternalCode>
  <ShortName>String 38</ShortName>
  <Name>String 39</Name>
  <PartnerGroupCode>String 40</PartnerGroupCode>
</Partners>
python for-loop nested-loops
2个回答
0
投票

如果我的理解是正确的,您想按以下方式将所有相应元素分组到列表中?

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

for i in range(len(list_a)):
    print('<Partners>')
    print('  <ExternalCode>' + list_a[i] + '</ExternalCode>')
    print('  <ShortName>' + list_b[i] + '</ShortName>')
    print('  <Name>' + list_c[i] + '</Name>')
    print('  <PartnerGroupCode>' + list_d[i] + '</PartnerGroupCode>')
    print('</Partners>')

输出

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

0
投票

从一组列表中获取第 i 个元素的另一种通用方法是 python 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>')
© www.soinside.com 2019 - 2024. All rights reserved.