51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nested for loop taking exact list items – Python

英文:

Nested for loop taking exact list items - Python

问题 {#heading}

<Partners>
  <ExternalCode>aaa</ExternalCode>
  <ShortName>ddd</ShortName>
  <Name>ggg</Name>
  <PartnerGroupCode>jjj</PartnerGroupCode>
</Partners>
<Partners>
  <ExternalCode>aaa</ExternalCode>
  <ShortName>ddd</ShortName>
  <Name>ggg</Name>
  <PartnerGroupCode>kkk</PartnerGroupCode>
</Partners>
...
(共计 9 个类似的块)

英文:

I am trying to write a code for building a XML file which has to have about 1000 lines of data about partners.

I want to take the loops to take for example from list_a first item and match it with first item of list_b. second with second and so on.

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

here is the code I have tried. Cannot find the right breaks from the loop so the code can give proper XML text.

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

The code has to give an XML text like this:

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

答案1 {#1}

得分: 1

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

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

英文:

if my understanding is correct you would like to group all the corresponding elements in a list in the below manner ?

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

Output

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

\</details\>


答案2
===



得分: 1


Here is the translated code:


```python
另一种通用的从一组列表中获取第i个元素的方法是使用Python的zip函数。

for a, b, c, d in zip(list_a, list_b, list_c, list_d):
    print('&lt;Partners&gt;')
    print(f'  &lt;ExternalCode&gt;{a}&lt;/ExternalCode&gt;')
    print(f'  &lt;ShortName&gt;{b}&lt;/ShortName&gt;')
    print(f'  &lt;Name&gt;{c}&lt;/Name&gt;')
    print(f'  &lt;PartnerGroupCode&gt;{d}&lt;/PartnerGroupCode&gt;')
    print('&lt;/Partners&gt;')
</code></pre>
  <p>Please note that I have translated the code portion as requested, and there are no additional contents or answers to translation questions.</p>
  <details>
   <summary>英文:</summary>
   <p>Another general approach to taking the i-th element from a group of lists is the python zip function.</p>
   <pre><code>for a, b, c, d in zip(list_a, list_b, list_c, list_d):
    print(&amp;#39;&amp;lt;Partners&amp;gt;&amp;#39;)
    print(f&amp;#39;  &amp;lt;ExternalCode&amp;gt;{a}&amp;lt;/ExternalCode&amp;gt;&amp;#39;)
    print(f&amp;#39;  &amp;lt;ShortName&amp;gt;{b}&amp;lt;/ShortName&amp;gt;&amp;#39;)
    print(f&amp;#39;  &amp;lt;Name&amp;gt;{c}&amp;lt;/Name&amp;gt;&amp;#39;)
    print(f&amp;#39;  &amp;lt;PartnerGroupCode&amp;gt;{d}&amp;lt;/PartnerGroupCode&amp;gt;&amp;#39;)
    print(&amp;#39;&amp;lt;/Partners&amp;gt;&amp;#39;)
</code></pre>
  </details>
  <p></p>
 </details>
</div>

```
赞(1)
未经允许不得转载:工具盒子 » Nested for loop taking exact list items – Python