Nested for loop taking exact list items – Python

huangapple go评论139阅读模式
英文:

Nested for loop taking exact list items - Python

问题

  1. <Partners>
  2. <ExternalCode>aaa</ExternalCode>
  3. <ShortName>ddd</ShortName>
  4. <Name>ggg</Name>
  5. <PartnerGroupCode>jjj</PartnerGroupCode>
  6. </Partners>
  7. <Partners>
  8. <ExternalCode>aaa</ExternalCode>
  9. <ShortName>ddd</ShortName>
  10. <Name>ggg</Name>
  11. <PartnerGroupCode>kkk</PartnerGroupCode>
  12. </Partners>
  13. ...
  14. (共计 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.

  1. list_a = ['aaa', 'bbb', 'ccc']
  2. list_b = ['ddd', 'eee', 'fff']
  3. list_c = ['ggg', 'hhh', 'iii']
  4. 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.

  1. for item_a in list_a:
  2. print('<Partners>')
  3. print(' <ExternalCode>', end='')
  4. print(item_a, end='')
  5. print('</ExternalCode>')
  6. for item_b in list_b:
  7. print(' <ShortName>', end='')
  8. print(item_b, end='')
  9. print('</ShortName>')
  10. for item_c in list_c:
  11. print(' <Name>', end='')
  12. print(item_c, end='')
  13. print('</Name>')
  14. for item_d in list_d:
  15. print(' <PartnerGroupCode>', end='')
  16. print(item_d, end='')
  17. print('</PartnerGroupCode>')
  18. print('</Partners>')

The code has to give an XML text like this:

  1. <Partners>
  2. <ExternalCode>String 33</ExternalCode>
  3. <ShortName>String 34</ShortName>
  4. <Name>String 35</Name>
  5. <PartnerGroupCode>String 36</PartnerGroupCode>
  6. </Partners>
  7. <Partners>
  8. <ExternalCode>String 37</ExternalCode>
  9. <ShortName>String 38</ShortName>
  10. <Name>String 39</Name>
  11. <PartnerGroupCode>String 40</PartnerGroupCode>
  12. </Partners>

答案1

得分: 1

  1. 如果我理解正确,您想以以下方式将列表中的相应元素分组?
  2. Output
  3. <Partners>
  4. <ExternalCode>aaa</ExternalCode>
  5. <ShortName>ddd</ShortName>
  6. <Name>ggg</Name>
  7. <PartnerGroupCode>jjj</PartnerGroupCode>
  8. </Partners>
  9. <Partners>
  10. <ExternalCode>bbb</ExternalCode>
  11. <ShortName>eee</ShortName>
  12. <Name>hhh</Name>
  13. <PartnerGroupCode>kkk</PartnerGroupCode>
  14. </Partners>
  15. <Partners>
  16. <ExternalCode>ccc</ExternalCode>
  17. <ShortName>fff</ShortName>
  18. <Name>iii</Name>
  19. <PartnerGroupCode>lll</PartnerGroupCode>
  20. </Partners>
英文:

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

  1. list_a = ['aaa', 'bbb', 'ccc']
  2. list_b = ['ddd', 'eee', 'fff']
  3. list_c = ['ggg', 'hhh', 'iii']
  4. list_d = ['jjj', 'kkk', 'lll']
  5. for i in range(len(list_a)):
  6. print('<Partners>')
  7. print(' <ExternalCode>' + list_a[i] + '</ExternalCode>')
  8. print(' <ShortName>' + list_b[i] + '</ShortName>')
  9. print(' <Name>' + list_c[i] + '</Name>')
  10. print(' <PartnerGroupCode>' + list_d[i] + '</PartnerGroupCode>')
  11. print('</Partners>')

Output

  1. <Partners>
  2. <ExternalCode>aaa</ExternalCode>
  3. <ShortName>ddd</ShortName>
  4. <Name>ggg</Name>
  5. <PartnerGroupCode>jjj</PartnerGroupCode>
  6. </Partners>
  7. <Partners>
  8. <ExternalCode>bbb</ExternalCode>
  9. <ShortName>eee</ShortName>
  10. <Name>hhh</Name>
  11. <PartnerGroupCode>kkk</PartnerGroupCode>
  12. </Partners>
  13. <Partners>
  14. <ExternalCode>ccc</ExternalCode>
  15. <ShortName>fff</ShortName>
  16. <Name>iii</Name>
  17. <PartnerGroupCode>lll</PartnerGroupCode>
  18. </Partners>
  19. </details>
  20. # 答案2
  21. **得分**: 1
  22. Here is the translated code:
  23. ```python
  24. 另一种通用的从一组列表中获取第i个元素的方法是使用Python的zip函数。
  25. for a, b, c, d in zip(list_a, list_b, list_c, list_d):
  26. print('<Partners>')
  27. print(f' <ExternalCode>{a}</ExternalCode>')
  28. print(f' <ShortName>{b}</ShortName>')
  29. print(f' <Name>{c}</Name>')
  30. print(f' <PartnerGroupCode>{d}</PartnerGroupCode>')
  31. print('</Partners>')

Please note that I have translated the code portion as requested, and there are no additional contents or answers to translation questions.

英文:

Another general approach to taking the i-th element from a group of lists is the python zip function.

  1. for a, b, c, d in zip(list_a, list_b, list_c, list_d):
  2. print(&#39;&lt;Partners&gt;&#39;)
  3. print(f&#39; &lt;ExternalCode&gt;{a}&lt;/ExternalCode&gt;&#39;)
  4. print(f&#39; &lt;ShortName&gt;{b}&lt;/ShortName&gt;&#39;)
  5. print(f&#39; &lt;Name&gt;{c}&lt;/Name&gt;&#39;)
  6. print(f&#39; &lt;PartnerGroupCode&gt;{d}&lt;/PartnerGroupCode&gt;&#39;)
  7. print(&#39;&lt;/Partners&gt;&#39;)

huangapple
  • 本文由 发表于 2023年8月11日 01:27:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76878037.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定