【问题标题】:Make Dictionary of Strings with Common Characters用常用字符制作字符串字典
【发布时间】:2017-10-28 02:27:41
【问题描述】:

我被一个家​​庭作业问题困住了,完全没有想法。在过去的 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))

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

【问题讨论】:

  • 不够清楚。什么是输入,什么是预期输出?
  • 输入:['I', 'say', 'what', 'I', 'mean', 'and', 'I', 'mean', 'what', 'I' , 'say'] 预期输出:{'I': ['I'], 'say': ['say', 'what', 'mean', 'and'], 'what': ['say', 'what', 'mean', 'and'], 'mean': ['say', 'what', 'mean', 'and'], 'and': ['say', 'what', 'mean ', '和']}

标签: python dictionary


【解决方案1】:

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

这里有一点帮助你继续前进:

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

【讨论】:

  • 这足以让我找到可行的解决方案。似乎我的想法是正确的,但解决问题的方法是错误的。不管怎样,谢谢你的帮助。
猜你喜欢
  • 2015-04-25
  • 2016-12-05
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多