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']
要创建一个包含我从电子表格中检索到的值的列表,我会这样做:
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']