我有下面的for/if-elif-else
循环,它根据t[0]
的大小从列表中的元组t
中提取部门信息:
for t in filt:
if len(t[0]) == 1:
pass
elif len(t[0]) == 2:
if 'organization' in t[0][0]['affiliation']:
depA = t[0][0]['affiliation']['organization']
else: depA = 'Not Available'
if 'organization' in t[0][1]['affiliation']:
depB = t[0][1]['affiliation']['organization']
else: depB = 'Not Available'
depC = 'None'
else:
if 'organization' in t[0][0]['affiliation']:
depA = t[0][0]['affiliation']['organization']
else: depA = 'Not Available'
if 'organization' in t[0][1]['affiliation']:
depB = t[0][1]['affiliation']['organization']
else: depB = 'Not Available'
if 'organization' in t[0][2]['affiliation']:
depC = t[0][1]['affiliation']['organization']
else: depC = 'Not Available'
即使t[0]
的大小可能不同,是否有一种方法可以在一行中执行类似的操作。我问这个问题的原因是,我可能错误地假设t[0]
中最多有3个部门,而实际上可能有更多部门,如果可能的话,我想保存几行代码
从本质上说,我真正想要的是一个基于我的数据ie6的合理数量的最大可能的部门列表,然后
for t in filt:
depA = [t[0][0]['affiliation']['organization'] if 'organization' in t[0][0]['affiliation'] else 'Not Available']
这很好,因为t[0]
的大小总是至少为1。但这是一个棘手的问题,下面的代码行没有python意义:
depB = [t[0][1]['affiliation']['organization'] if t[0][1] exists AND 'organization' in t[0][1]['organization'] else 'Not Available']
等等
如果我没有把题目写对,请按要求修改!谢谢
结果是,下面的代码行将起作用,根据所讨论的列表的大小检查索引,并在列表中使用if-else:
相关问题 更多 >
编程相关推荐