Python печатает строку как список символов - PullRequest
0 голосов
/ 20 марта 2020
def make_word_list(file_object):
    return [line.strip() for line in file_object]

def is_anagram(s1, s2):
    return sorted(s1) == sorted(s2)

def find_anagrams(word_list):
    anagram_dict = {}
    for word in word_list:
        k = str(sorted(word))
        anagram_dict[k] = anagram_dict.get(k, []) + [word]

    for k, v in sorted(anagram_dict.items()):
        if len(v) > 1:
            print(str(k), str(v))

if __name__ == '__main__':
    fin = open('words.txt')
    word_list = make_word_list(fin)
    find_anagrams(word_list)

Когда я запускаю эту программу, она сохраняет строку печати ('k') в виде списка строк. Я проверил тип, и он подтвердил, что это строка. Пожалуйста, помогите.

1 Ответ

1 голос
/ 20 марта 2020

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

Вместо этого вам нужно объединить символы обратно в строку с помощью

"".join(sorted(word))

"". Join (список) добавляет все элементы в списке вместе, разделенные тем, что в кавычках , Как будто вы пишете

lst= [1,2,3]
result = []
separator = ","
for i in list:
     result = result + "," + i
result = result[len(separator):] # Remove the first separator
...