如何獲得的元組的第一個元素相匹配的第二個元素 預期的行爲是如何獲得的元組的第一個元素相匹配的第二個元素(蟒蛇)
('John','P')
('Mary','P')
getAll('P')
返回['John','Mary']
如何獲得的元組的第一個元素相匹配的第二個元素 預期的行爲是如何獲得的元組的第一個元素相匹配的第二個元素(蟒蛇)
('John','P')
('Mary','P')
getAll('P')
返回['John','Mary']
使用列表理解:
>>> lis = [ ('John','P'), ('Mary','P') ]
def getall(my_list, s):
return [x for x, y in my_list if y==s]
...
>>> getall(lis, 'P')
['John', 'Mary']
如果你這樣做了多次,那麼最好在這裏使用字典:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for v, k in lis:
... d[k].append(v)
...
>>> d['P']
['John', 'Mary']
假設你有這些元組列表?爲了簡單起見,這個答案不使用列表理解。如果你問這個問題,你可能不知道列表理解是什麼。
def get_all(foo, that_list):
new_list = []
for item in that_list:
if item[1] == foo:
new_list.append(item[0])
return new_list
some_list = [('John', 'P'), ('Mary', 'P')]
get_all('P', some_list)
下面的函數可以過濾所期望:
data = [('John','P'), ('Mary','P')]
def getAll(mydata, key):
return [item[0] for item in mydata if item[1] == key]
這使用一個列表解析包括該元組的第一個元素,但只有當所述元組的第二個元素相匹配key
(在你的例子'P'
)。
[t[0] for t in list_of_tuples if t[1] == 'P']