gpt4 book ai didi

python - 确定子字符串在字符串列表中的位置

转载 作者:行者123 更新时间:2023-11-30 23:22:53 25 4
gpt4 key购买 nike

我有一个单词(字符串)列表,例如:

word_lst = ['This','is','a','great','programming','language']

还有第二个带有子字符串的列表,例如:

subs_lst= ['This is', 'language', 'a great']

假设 subs_lst 中的每个子字符串在 word_lst 中仅出现一次。 (子字符串可以是任意长度)

我想要一种简单的方法来查找 word_lst 中子字符串的层次位置。所以我想要的是根据它们在 word_lst 中的出现对 subs_lst 进行排序。在前面的示例中,输出为:

out = ['This is', 'a great', language]

有人知道一个简单的方法吗?

最佳答案

可能有一种更快的方法来做到这一点,但这至少有效:

word_lst = ['This','is','a','great','programming','language']
subs_lst= ['This is', 'language', 'a great']
substr_lst = [' '.join(word_lst[i:j]) for i in range(len(word_lst)) for j in range(i+1, len(word_lst)+1)]
sorted_subs_list = sorted(subs_lst, key=lambda x:substr_lst.index(x))
print sorted_subs_list

输出:

['This is', 'a great', 'language']

这个想法是建立一个包含 word_lst 中每个子字符串的列表,并排序,以便所有以“This”开头的条目排在前面,然后是所有以“is”开头的条目,等等..我们将其存储在 substr_lst 中。

>>> print substr_lst
['This', 'This is', 'This is a', 'This is a great', 'This is a great programming', 'This is a great programming language', 'is', 'is a', 'is a great', 'is a great programming', 'is a great programming language', 'a', 'a great', 'a great programming', 'a great programming language', 'great', 'great programming', 'great programming language', 'programming', 'programming language', 'language']

一旦我们有了这个列表,我们就对 subs_list 进行排序,使用 substr_list 中每个条目的索引作为排序依据的键:

>>> substr_lst.index("This is")
1
>>> substr_lst.index("language")
20
>>> substr_lst.index("a great")
12

关于python - 确定子字符串在字符串列表中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24272395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com