Return 在列表理解中只有索引零

Return only index zero in a list comprehension

要创建一个包含我从电子表格中检索到的值的列表,我会这样做:

result = {'range': 'Winning_Margin!G2:O1000', 'majorDimension': 'ROWS', 
          'values': [['10148734', 'CD Olimpia', 'CD Vida', '1', 
                      '71', '85', '14.00', '1.40', '2-0'], 
                     ['', '', '', '', '', '', '', '', ''], 
                     ['10024627', 'Sporting Kansas City', 'FC Dallas', 
                      '2', '35', '1', '-34.00', '2.88']]}

for a in result["values"]:
    a.extend([''] * (max(map(len, result["values"])) - len(a)))

spreadsheets_match_id = [item for sublist in result["values"] for item in (sublist or ['']) if sublist[-1] != '']

这样 returns 整个索引:

['10148734', 'CD Olimpia', 'CD Vida', '1', '71', '85', '14.00', '1.40', '2-0']

但是我需要的只是每个列表列表的第一个索引,在这种情况下结果是:

['10148734']

试图让每个项目都变成 item[0],但是在尝试这样做时,它要么说 item 不存在,要么说 returns 每个列表的第一个字母列表中的索引,如 ['1', 'C', 'C', '1', '7', '8', '1', '1', '2'].

编辑: 您可以检查子列表的最后一个元素是否为 '' 并保留不是的第一个元素:

out = [sublist[0] for sublist in result["values"] if sublist[-1] !='']

旧答案:

IIUC,你想获取子列表的第一个不是 '' 的元素,对吧?然后,您可以在列表理解中创建单个元素列表,并在嵌套循环中对其进行迭代以检查它是否为 ''

out = [item for sublist in result["values"] for item in [sublist[0]] if item !='']

输出:

['10148734', '10024627']