Отсортированный список: поиск элементов, начиная с новых мест - PullRequest
0 голосов
/ 09 мая 2020

Вопрос о получении строки, соответствующей условию, и о запуске нового поиска с того места, где было выполнено условие.

У меня есть упорядоченный список городов, и я хочу извлечь по одной строке для каждой буквы алфавит, каждый новый поиск начинается с места предыдущего поиска.

Какой общий подход является лучшим? Для строк, следующих за «А», мне нужно сравнивать индексы результатов или создавать словарь? например, в Python, могу ли я продолжить поиск из указанного c местоположения в списке?

# Ordered list of towns
towns = ['The Gord', 'Wilna Geo', 'The Framd', 'The Fild', 'Iron Geo', 'Brim Ness', 'RRH Saxa Vord', 'Houll', 'Skaw', 'Norwick', 'Burrafirth', 'Saxa Vord']


    alpha = []
    for elem in towns[:]:
        if str(elem).startswith("A"):
            alpha.append(elem)
            break
        # new search starting from position where 'A' was true; return next value starting with 'B' - 
        if str(elem).startswith("B"):
            alpha.append(elem)
        # Continue with the rest of the letters
    return alpha

Как бы вы концептуализировали то, что я пытаюсь достичь?

Кроме Python, какой фреймворк лучше подходит для моих нужд, например SQL, R, другое?

1 Ответ

1 голос
/ 09 мая 2020

Я считаю, что вы можете сделать что-то вроде этого:

towns = ['The Gord', 'Wilna Geo', 'The Framd', 'The Fild', 'Iron Geo', 'Brim Ness', 'RRH Saxa Vord', 'Houll', 'Skaw', 'Norwick', 'Burrafirth', 'Saxa Vord']

alpha = []

current_letter = "A"

for elem in towns:
    if elem[0] == current_letter:
        alpha.append(elem)

        current_letter = chr(ord(current_letter) + 1)

Когда элемент, начинающийся с current_letter, current_letter изменяется на следующую возможную букву.

Примечание как я изменил использование startswith на [0] (потому что мы проверяем, начинается ли elem только с одной буквы). Я также удалил ненужный [:] в городах. Наконец, elem работает вместо str(elem) (это уже str).

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