Python - Доступ к элементам внутри списка из текстового файла - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь применить проверку для элементов в списке.Мне удалось открыть его, но я изо всех сил пытаюсь сравнить, если два слова являются анаграммами.

Это мой результат в терминале.

anagram:  ['word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff']

Anagram

В этом примере ясно, что я ошибаюсь с двумя одинаковыми переменными A, B, но не уверен, что делать.

word1 = open('a.txt', 'r').read().split()
word2 = open('a.txt', 'r').read().split()
count = {}
validation = True
if len(a) == len(b):
    for i in range(len(a)):
        if a[i] in count:
            count[a[i]] += 1
        else:
            count[a[i]] = 1  
        if b[i] in count:
            count[b[i]] += 1
        else:
            count[b[i]] = 1     
    for i in count:
        if count[i] % 2 == 0:
            validation = "Anagram"
        else:
            validation = "Not Anagram"
            break
else:
    validation = "Not Anagram"            
print(validation)

Какого черта я делаю?

Я хочу добиться этого в терминале.

anagram:  ['word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff']

anagram, not anagram, anagram, not anagram, anagram, not anagram, anagram, not anagram

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете попробовать использовать sets для этого:

anagram = ['word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff', 'word,word', 'stiff,schtiff']
for elem in anagram:
    items = elem.split(",")
    firstLetters = set(items[0])
    secondLetters = set(items[1])
    if firstLetters == secondLetters:
        print("Anagram")
    else:
        print("Not anagram")

Выход:

Anagram
Not anagram
Anagram
Not anagram
Anagram
Not anagram
Anagram
Not anagram

Редактировать: Воткак вы можете прочитать их из файла и выполнить сравнения:

with open("anagram.txt","r") as inFile:
    words = [line for line in inFile]
    words = words[0].strip().split(",")
    first = []
    second = []
    for i in range(len(words)):
        if i%2 == 0:
            first.append(words[i])
        else:
            second.append(words[i])
    for f,s in zip(first,second):
        if set(f) == set(s):
            print("Anagram")
        else:
            print("Not anagram")
...