消除列表中的重复字谜

问题描述 投票:0回答:1
s = ['4', 'poke', 'aaagmnrs', 'pkoe', 'okpe', 'ekop', 'anagrams']

final_list = []

for i in range(0, len(s)):
    for j in range(i+1, len(s)):
        if sorted(s[i]) == sorted(s[j]):
            if s[i] not in final_list:
                final_list.append(s[i])

print(final_list)

我得到此输出

['poke', 'aaagmnrs', 'pkoe', 'okpe']

我需要此输出

['poke', 'aaagmnrs']

如果列表中有多个项目是列表中较早项目的拼写形式,那么我基本上只需要第一次出现。例如,“ poke”出现在“ pkoe”,“ okpe”和“ ekop”之前,我只需要在输出列表中使用“ poke”。与“ aaagmnrs”相同。由于“ aaagmnrs”出现在“ anagrams”之前,因此我只需要在输出中使用“ aaagmnrs”。

感谢任何输入!

python-3.5
1个回答
0
投票

考虑保留找到的七巧板的排序版本的列表,然后检查排序后的字符串列表是否包含排序后的字符串。在必要时将列表添加到列表中之后,当您在列表中找到匹配的项目时,也可以打破内循环:

s = ['4', 'poke', 'aaagmnrs', 'pkoe', 'okpe', 'ekop', 'anagrams']

final_list = []
final_list_sorted = []

for i in range(0, len(s)):
    sortedi = sorted(s[i])
    for j in range(i+1, len(s)):
        if sortedi == sorted(s[j]):
            if sortedi not in final_list_sorted:
                final_list.append(s[i])
                final_list_sorted.append(sortedi)

            break

print(final_list)
['poke', 'aaagmnrs']
© www.soinside.com 2019 - 2024. All rights reserved.