检查它们是否相同

时间:2018-10-15 13:58:04

标签: python string python-3.x

我想从文本文件中读取并打印前三个单词具有相同的首三个字母。我可以得到前3个首字母缩写,但无法检查它们是否相同。

这是我的代码:

def main():
  f = open("words.txt", "r+")

  # The loop that prints the initial letters
  for word in f.read().split():
     # the part that takes the 3 initials letters of the word
      initials = [j[:3] for j in word.split()]

      print(initials)

words.txt

when, where, loop, stack, wheel, wheeler 

输出

4 个答案:

答案 0 :(得分:3)

您可以使用从前三个字母到单词列表的映射。 collections.defaultdict可以在这里为您节省一些按键:

from collections import defaultdict

def get_words():
    d = defaultdict(list)
    with open('words.txt') as f:            
        for line in f:
            for word in line.split(', '):
                prefix = word[:3]
                d[prefix].append(word)
                if len(d[prefix]) == 3:
                    return d[prefix]
    return []

print(get_words())  # ['when', 'where', 'wheel']

答案 1 :(得分:0)

您可以在此处使用前3个字符作为关键字的字典。例子

d={}
f = open("words.txt", "r+")
key_with_three_element=''

for word in f.read().split():
 if word[:3] in d:
    d[word[:3]].append(word)
else:
    d[word[:3]]=[word]
if(len(d[word[:3]])==3):
    key_with_three_element=word[:3]
    break
print(d[key_with_three_element])

输出:

['when', 'where', 'wheel']

答案 2 :(得分:0)

此代码段将单词按前3个字母分组:

def main():
    # a dict where the first 3 letters are the keys and the
    # values are lists of words
    my_dict = {}

    with open("words.txt", "r") as f:
        for line in f:
            for word in line.strip().split():
                s = word[:3]

                if s not in my_dict:
                    # add 3 letters as the key
                    my_dict[s] = []
                my_dict[s].append(word)

                if len(my_dict[s]) == 3:
                    print(my_dict[s])
                    return

    # this will only print if there are no 3 words with the same start letters
    print(my_dict)

如果您使用相同的3个字母得到3个单词,这将停止处理(我使用了return语句)。

答案 3 :(得分:0)

def main():
  f = open("words.txt", "r+")

for word in f.read().split():
    record[word[:3]] = record.get(word[:3], [])+[word]
    if len(record[word[:3]]) == 3:
        print (record[word[:3]])
        break