【发布时间】:2016-10-10 05:11:23
【问题描述】:
我有一个函数 wordScore(word, scoreList)。 word 是一个只包含字母的字符串,而 scoreList 是一个包含字母表中每个字母值的列表:
scoreList = [ ["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 和 reduce 将其返回。示例:
wordScore('agile', scoreList)
>>> 6
我相信我无法解决这个问题,因为我不确定地图的作用。非常感谢您的帮助。
第二个问题:
所以现在我得到了一个字母列表(比如说 listOfwords = ["a", "am", "at", "apple", "bat", "bar", "babble", "can", "foo", "spam", "spammy", "zzyzva"]) listOfwords 中的字母。所以基本上它会像:
>>> 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]]
这是我目前的代码:
def scoreList(Rack):
test = [x for x in Dictionary if all(y in Rack for y in x)]
return test
但是,当我运行它时,它只给了我可以用字母组成的单词,我不确定如何获得每个单词的分数。我可以使用 wordScore 吗?同样的限制也适用。
【问题讨论】:
-
你能把
scoreList转换成字典吗?如:{'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} -
遗憾的是,它必须保留一个列表。如果可以的话会容易得多。
标签: python-2.7 dictionary reduce