Учитывая список строк, возвращайте символы, которые появляются в более чем одной строке - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь реализовать функцию, которая получает переменное количество строк и возвращает символы, которые появляются как минимум в двух строках:

test_strings = ["hello", "world", "python", ]

print(test(*strings))
{'h', 'l', 'o'}

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Однострочник, использующий наборы и collections.Counter:

from collections import Counter

test_strings = ["hello", "world", "python"]

letters = {k for k, v in Counter([l for x in test_strings for l in set(x)]).items() if v > 1}

Выход:

>>> letters
{'o', 'l', 'h'}
0 голосов
/ 06 января 2020

Удалите дубликаты из строк (сделав наборы символов каждой строки), затем создайте Counter, который подсчитывает количество строк ввода, в которых каждый символ появился в

from collections import Counter
from itertools import chain

def test(*strings, n=2):
    sets = (set(string) for string in strings)
    counter = Counter(chain.from_iterable(sets))
    return {char for char, count in counter.items() if count >= n}


print(test("hello", "world", "python"))  # {'o', 'h', 'l'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...