Рубрики
Без рубрики

Карта строки в Python с перечислением

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

Проблема: создать карту букв и индексов в строке.

Мой первый подход был петлю по строке, используя Диапазон (ЛЕН (S)) и проверяя, существует ли буква на карте перед его добавлением:

    s = 'mozzarella'
    mapped_s = {}
    for i in range(len(s)):
        if s[i] in mapped_s:
            mapped_s[s[i]].append(i)
        else:
            mapped_s[s[i]] = [i]
    print(f' mapped: {mapped_s}')

Это работает:

{'m': [0], 'o': [1], 'z': [2, 3], 'a': [4, 9], 'r': [5], 'e': [6], 'l': [7, 8]}

Но есть еще питонический способ получить эту карту: использовать перечисление ()!

    letters = 'mozzarella'
    mapped_s = collections.defaultdict(list)
    for index, letter in enumerate(letters):
        mapped_s[letter].append(index)
    print(f'mapped: {dict(mapped_s)}')

Перечислять это Python встроенный функция Это дает вам список кортежей индексов и элементов в неразмерном:

print(f'enum {list(enumerate('mozzarella'))}')
enum [(0, 'm'), (1, 'o'), (2, 'z'), (3, 'z'), (4, 'a'), (5, 'r'), (6, 'e'), (7, 'l'), (8, 'l'), (9, 'a')]

Он может быть использован для цикла по поводу утечки, сохраняя отслеживание индекса и элемента, аналогично тому, что _range (Len (s)) _was делает в моем первом примере:

    for i, element in enumerate('mozzarella'):
        print(f'{i}: {element}')

Он также удаляет необходимость проверить, существует ли письмо перед созданием карты этой буквы!

Вы можете прочитать больше о перечете В документах или эта супер хорошая статья Дэн Баденс Отказ

Пост Карта строки в Python с перечислением Первоначально был опубликован на flaviabastos.ca.

Оригинал: “https://dev.to/flaviabastos/map-a-string-in-python-with-enumerate-34kg”