排序列表:查找从新位置开始的元素。

问题描述 投票:0回答:1

关于获取符合条件的字符串& 从满足条件的位置开始新的搜索的问题。

我有一个有序的城镇列表&我想为每个字母提取一个字符串,每个新的搜索从前一个搜索的位置开始。

最好的一般方法是什么?对于'A'之后的字符串,我是否需要比较结果的索引或创建一个字典? 例如,在Python中,我是否可以从列表中的特定位置继续搜索?

# 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、其他?

python list sorting
1个回答
1
投票

我相信你可以做这样的事情。

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).

© www.soinside.com 2019 - 2024. All rights reserved.