包含不同大小元素的列表

2024-05-15 11:07:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的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']

等等

如果我没有把题目写对,请按要求修改!谢谢


Tags: in列表forifnotelseavailable部门
1条回答
网友
1楼 · 发布于 2024-05-15 11:07:41

结果是,下面的代码行将起作用,根据所讨论的列表的大小检查索引,并在列表中使用if-else:

depB = [t[0][1]['affiliation']['organization'] if 2<=len(t[0]) and 'organization' in t[0][1]['affiliation'] else 'Not Available' for t in filt]

相关问题 更多 >