Вы можете использовать список понимание:
>>> seq = [['String1', 4], ['String2', 8], ['String3', 15], ['String4', 8]]
>>> result = [s for s, i in seq if i == 8]
>>> print result
['String2', 'String4']
С другой стороны, если у вас есть контроль над форматом вашей структуры данных, я предлагаю использовать словарь. Тогда получение строк легко:
>>> d = {8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']}
>>> print d[8]
['String2', 'String4']
Получение данных в этот формат в первую очередь, это довольно просто, хотя я не думаю, что вы можете сделать это чисто в одной строке.
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for s, i in seq:
... d[i].append(s)
...
>>> print d
defaultdict(<type 'list'>, {8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']})
Или
>>> d = {}
>>> for s,i in seq:
... d.setdefault(i, []).append(s)
...
>>> print d
{8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']}
Если это ваша структура данных, нет. –
Что произойдет, если две строки имеют одинаковое целочисленное значение? Если ответ «это никогда не произойдет», подумайте о переходе на словарь. – Kevin
mmmm, что может случиться, я ожидал получить список со всеми строками :) –