如何根据python列表中的内容以特定的顺序/格式读取和打印列表?



python 的新手和此示例列表

lst = ['<name>bob</name>', '<job>doctor</job>', '<gender>male</gender>', '<name>susan</name>', '<job>teacher</job>', '<gender>female</gender>', '<name>john</name>', '<gender>male</gender>']

有姓名、工作和性别 3 类。我希望这 3 个类别在同一行上,看起来像<name>bob</name>, <job>doctor</job>, <gender>male</gender>

我的实际列表非常大,有 10 个类别,我希望在同一行。我还试图找出一种方法,如果其中一个类别不在列表中,它会打印类似 N/A 的内容以指示它不在列表中

例如,我希望它看起来像

<name>bob</name>, <job>doctor</job>, <gender>male</gender>
<name>susan</name>, <job>teacher</job>, <gender>female</gender>
<name>john</name>, N/A, <gender>male</gender> 

最好的方法是什么?

这是一种方法。这将处理任何长度列表,并保证分组,无论列表有多长,只要它们以正确的顺序排列。

更新为转换为字典,以便您可以测试密钥是否存在。

lst = ['<name>bob</name>', '<job>doctor</job>', '<gender>male</gender>', '<name>susan</name>', '<job>teacher</job>', '<gender>female</gender>', '<name>john</name>', '<gender>male</gender>']
newlst = []
tmplist = {}
for item in lst:
value = item.split('>')[1].split('<')[0]
key = item.split('<')[1].split('>')[0]
if '<name>' in item:
if tmplist:
newlst.append(tmplist)
tmplist = {}
tmplist[key] = value
#handle the remaining items left over in the list
if tmplist:
newlst.append(tmplist)
print(newlst)
#test for existance
for each in newlst:
print(each.get('job', 'N/A'))

最新更新