用常用字符制作字符串

时间:2017-10-28 02:27:41

标签: python dictionary

我遇到了一个家庭作业问题而且完全没有任何想法。我在过去的7个小时内尝试过不同的代码变体无济于事。作业问题如下:

  

编写一个名为shareALetter的函数,它接受一个参数wordList - 一个单词列表。创建并返回一个字典,其中wordList中的每个单词都是一个键,相应的值是wordList中与该单词至少共享一个字母的所有单词的列表。字典中的任何值都不应有重复的单词。

     

例如,以下是正确的输出:

print(shareALetter(horton))
{'I': ['I'],
 'say': ['say', 'what', 'mean', 'and'], 
 'what': ['say', 'what', 'mean', 'and'], 
 'mean': ['say', 'what', 'mean', 'and'], 
 'and': ['say', 'what', 'mean', 'and']}

下面的代码是最接近解决问题的代码:

def shareALetter(wordList):
    shareCount = {}
    words=[]
    string=''
    for word in wordList:
        if word not in words:
            words.append(word)
        if word not in string:
            string += word
        if word not in shareCount:
            shareCount[word] = ''
    for key in shareCount:
        sharedWords = []
        for word in words:
            for letter in string:
                if letter in word and word not in sharedWords:
                    sharedWords.append(word)
                if word not in shareCount:
                    shareCount[word]=sharedWords

    return(shareCount)
print(shareALetter(test1))

我知道这很糟糕,很草率,而且效率很低,可能有十几个问题,但我无法弄清楚如何解决这里的任何问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当您需要创建这种算法时,想象一下如何用笔和纸来处理这种情况是有帮助的。如果我是你,我实际上会写出几个字并手动完成练习。在执行此操作时,请注意您是如何解决该问题的,并查看是否可以将该系列操作转换为代码。

这里有点推动让你继续前进:

def share_a_letter(word_list):
  character_matches = {}
  for word_one in word_list:
    character_matches[word_one] = set()
    for word_two in word_list:
      for character in word_two:
        # TODO:
        # check if the character is in word_one
        # if so, do something special
  return character_matches

words = ['hello', 'wopper', 'cat', 'pickle']
print(share_a_letter(words))