Python 使用常用字符创建字符串字典

Python 使用常用字符创建字符串字典,python,dictionary,Python,Dictionary,我被一道家庭作业题难住了,完全不知所措。在过去的7个小时里,我尝试了不同版本的代码,但都没有用。作业问题如下: 编写一个名为shareALetter的函数,该函数接受一个参数wordList——一个单词列表。创建并返回一个字典,其中wordList中的每个单词都是一个键,相应的值是wordList中与该单词至少共享一个字母的所有单词的列表。字典中的任何值都不应该有重复的单词 例如,以下是正确的输出: 下面是最接近解决问题的代码: def shareALetter(wordList): s

我被一道家庭作业题难住了,完全不知所措。在过去的7个小时里,我尝试了不同版本的代码,但都没有用。作业问题如下:

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

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

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

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))

我知道这是可怕的,草率的,效率低下的,可能有十几个问题,但我不知道如何解决这里的任何问题。任何帮助都将不胜感激。

当您需要创建这种算法时,想象一下您将如何使用纸和笔来处理这种情况是很有帮助的。如果我是你,我会写下几个单词,然后手工完成练习。这样做时,请注意您是如何解决问题的,并查看是否可以将这一系列操作转换为代码

这里有一点提示可以让你继续前进:

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))

不够清楚。什么是输入,什么是预期输出?输入:['I','say','What','I','mean','and','I','mean','What','I','say':['say','What','mean','and'],'What':['say','What','mean','and'],'mean','and':['say','What','mean','and']。['say','mean','and']这足以为我指明一个可行的解决方案的方向。看来我的想法是正确的,但解决问题的方法是错误的。不管怎样,谢谢你的帮助。
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))