To create a list with the values that I retrieve from a spreadsheet, I do it like this:
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] != '']
This way returns the entire index:
['10148734', 'CD Olimpia', 'CD Vida', '1', '71', '85', '14.00', '1.40', '2-0']
But my need is just the first index of each list of list, in this case the result is:
['10148734']
Tried to make each item become item[0]
but when trying to do that, it either says that item
doesn't exist or returns the first letter of each of the list's indexes within the list like ['1', 'C', 'C', '1', '7', '8', '1', '1', '2']
.
CodePudding user response:
Edit:
You can check if the last element of the sublist is ''
or not and keep the first elements of the ones that aren't:
out = [sublist[0] for sublist in result["values"] if sublist[-1] !='']
Old answer:
IIUC, you want to get the first element of a sublist that is not ''
, right? Then you can create a single element list in a list comprehension and iterate over it in a nested loop to check if it is ''
or not:
out = [item for sublist in result["values"] for item in [sublist[0]] if item !='']
Output:
['10148734', '10024627']