У меня есть список «а»Найти элемент в списке кортежей
a= [(1,2),(1,4),(3,5),(5,7)]
Мне нужно найти все кортежи для определенного числа. скажем, для 1 будет
result = [(1,2),(1,4)]
Как это сделать?
У меня есть список «а»Найти элемент в списке кортежей
a= [(1,2),(1,4),(3,5),(5,7)]
Мне нужно найти все кортежи для определенного числа. скажем, для 1 будет
result = [(1,2),(1,4)]
Как это сделать?
Если вы просто хотите, чтобы первый номер, чтобы соответствовать вы можете сделать это следующим образом:
[item for item in a if item[0] == 1]
Если вы просто ищете для кортежей с 1 в них:
[item for item in a if 1 in item]
Читайте на List Comprehensions
[ (x,y) for x, y in a if x == 1 ]
Также дочитать до generator functions и yield
.
def filter_value(someList, value):
for x, y in someList:
if x == value :
yield x,y
result= list(filter_value(a, 1))
'if x == 1' должно быть' if x == value' – sambha
for item in a:
if 1 in item:
print item
[tup for tup in a if tup[0] == 1]
Существует на самом деле умный способ сделать это, что полезно для любого списка кортежей, где размер каждого кортежа 2: вы можете превратить ваш список в один словарь.
Например,
test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
Как вы примените это к проблеме Брюса? – HelloGoodbye
Хороший ответ (хотя, возможно, и не для этого вопроса). Хорошо работал для меня, чтобы определить, было ли значение в списке выбранных кортежей (например, если «привет» в тесте) – MagicLAMP
На самом деле он не отвечает на вопрос, как предлагает MagicLAMP. В частности, 'dict (X)' преобразует X в словарь, где используется последний кортеж любого общего первого элемента, - это значение, которое используется. В примере OP это вернет (1,4) в отличие от обоих (1,2) и (1,4). – BBischof
filter
функция может также предоставить интересное решение:
result = list(filter(lambda x: x.count(1) > 0, a))
который ищет кортежи в списке для любого вхождения 1
. Если поиск ограничивается первым элементом, решение может быть изменено на:
result = list(filter(lambda x: x[0] == 1, a))
Используя функцию фильтра:
>>> def get_values(iterables, key_to_find):
return list(filter(lambda x:key_to_find in x, iterables)) >>> a = [(1,2),(1,4),(3,5),(5,7)] >>> get_values(a, 1) >>> [(1, 2), (1, 4)]
Ах, список понимание. – HelloGoodbye