Проверить, появляется ли слово хотя бы дважды в списке кортежей? - PullRequest
0 голосов
/ 12 мая 2019

Предположим, у меня есть список:

[('a','Organization'),('b','Organization'),('c','Person'),('d','Location'),('e','Organization')]

Как я могу узнать, встречается ли слово 'Organization' хотя бы дважды в этом списке?

Я также получаю другое решение:

Counter([c for (w,c) in list])['ORGANIZATION'] >= 2

Ответы [ 5 ]

3 голосов
/ 12 мая 2019

Вы можете использовать генератор понимания и sum, чтобы подсчитать, сколько раз появляется 'Organization':

l = [('a','Organization'),('b','Organization'),
     ('c','Person'),('d','Location'),('e','Organization')]

sum(1 for i,j in l if j == 'Organization') > 2
# True
1 голос
/ 12 мая 2019

Другой способ использования operator.itemgetter

Ex:

from operator import itemgetter
data = [('a','Organization'),('b','Organization'),('c','Person'),('d','Location'),('e','Organization')]

print(list(map(itemgetter(1), data)).count("Organization"))

Выход:

3
1 голос
/ 12 мая 2019
list = [('a','Organization'),('b','Organization'),('c','Person'),('d','Location'),('e','Organization')]

sublist = [value[1] for value in list]  # retrieve every second value of each tuple
print(sublist.count('Organization'))  # find occurrences of 'Organization'
1 голос
/ 12 мая 2019

Попробуйте это:

a = [('a','Organization'),('b','Organization'),('c','Person'),('d','Location'),('e','Organization')]
check_tot_appearance = sum(1 for i in a if 'Organization' in i)>=2

ВЫХОД :

True
0 голосов
/ 12 мая 2019

используйте filter, чтобы проверить, является ли 'Organsiation' в кортеже и длина счета, если более двух раз, возвращается True

a=[('a','Organization'),('b','Organization'),('c','Person'),('d','Location'),('e','Organization')]

print(len(list(filter(lambda x: 'Organization' in x,a)))>=2 )

#output True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...