【发布时间】:2017-02-17 16:13:14
【问题描述】:
函数 scoreList(Rack) 接收一个字母列表。您还将获得一个全局变量 Dictionary:["a", "am", "at", "apple", "bat", "bar", "babble", "can", "foo", "spam", "spammy", "zzyzva"]。
使用字母列表查找可以由字典中的字母组成的所有可能单词。对于每个可以组成的单词,还可以使用 scrabbleScore 找到该单词的分数。
拼字游戏分数 =
[ ["a", 1], ["b", 3], ["c", 3], ["d", 2], ["e", 1],
["f", 4], ["g", 2], ["h", 4], ["i", 1], ["j", 8],
["k", 5], ["l", 1], ["m", 3], ["n", 1], ["o", 1], ["p", 3],
["q", 10], ["r", 1], ["s", 1], ["t", 1], ["u", 1], ["v", 4],
["w", 4], ["x", 8], ["y", 4], ["z", 10] ]
我可以使用由列表解析(map、filter、reduce 等)、if 语句和 for 循环组成的表达式,但前提是它们位于列表解析的上下文中。
例子:
>>> scoreList(["a", "s", "m", "t", "p"])
[['a', 1], ['am', 4], ['at', 2], ['spam', 8]]
>>> scoreList(["a", "s", "m", "o", "f", "o"])
[['a', 1], ['am', 4], ['foo', 6]]
它们呈现的顺序无关紧要。它还必须保持为列表而不是 dic。希望对这个问题有所帮助,或者如果你能让我更好地了解如何在这个问题中使用地图或过滤器。
我的代码:
def scoreList(Rack):
test = [x for x in Dictionary if all(y in Rack for y in x)]
return test
输出:
>>> scoreList(["a", "s", "m", "t", "p"])
['a', 'am', 'at', 'spam']
如您所见,我能够找到单词,但找不到分数。不使用 dict 怎么能找到呢?
【问题讨论】:
-
您的示例答案中的数字是多少?
-
很遗憾,不,我想我的问题可能措辞错误。您输入自己的字母列表,任何字母。字典中任何可以用这些字母组成的单词都会连同它的分数一起输出。我也忘了说它必须是一个列表。很抱歉造成误解。
标签: python list dictionary