Как узнать, сколько раз последнее значение во внутреннем списке дублируется во вложенном списке Python? - PullRequest
1 голос
/ 11 марта 2019

У меня был список:

a = [[0, 2, 5, 12], [1, 2, 3, 4, 8, 9], [2, 4, 12], [3, 8, 9], [4, 5, 7]]

И я хочу получить 2, потому что a[0][-1] == a[2][-1], a[1][-1] == a[3][-1]

Два последних значения дублируются.

Я пытался использовать sum(1 for sublist in a if sublist[-1] == sublist[-1]) это не удалось, и я застрял для этого.

Ответы [ 3 ]

2 голосов
/ 11 марта 2019

Вы можете использовать collections.Counter для подсчета вхождений последних элементов:

from collections import Counter
last = Counter([i[-1] for i in a])
# Counter({7: 1, 9: 2, 12: 2})

А затем посчитайте, сколько из них больше 1:

sum(1 for k,v in last.items() if v>1)
# 2
0 голосов
/ 11 марта 2019

Поскольку место дубликатов не имеет значения, проблема заключается просто в длине списка за вычетом уникальных значений. Итак:

last_elements=[i[-1] for i in a]
num_duplicates=len(last_elements)-len(set(last_elements)
0 голосов
/ 11 марта 2019

Создайте набор последних значений из списка, а затем посчитайте длину:

len(a) - len({x[-1] for x in a})
# 2
...