【发布时间】:2016-03-26 12:40:12
【问题描述】:
scrabble_scores = [(1, "EAOINRTLSU"), (2, "DG"), (3, "BCMP"),
(4, "FHVWY"), (5, "K"), (8, "JX"), (10, "QZ")]
def get_scrabble_scorer():
print {x:y for x,z in scrabble_scores for y in z}
pass
get_scrabble_scorer()
我希望有一个输出:
[1:'E',1:'A,1:'O',1:'I'....]
这样分数将映射到单词中的每个字母
但我得到了输出:
{1: 'U', 2: 'G', 3: 'P', 4: 'Y', 5: 'K', 8: 'X', 10: 'Z'}
帮帮我
【问题讨论】:
-
您无法获取
1:'E',1:'A'。字典的键应该是唯一的。 -
如果您在字典中切换
x和y,它应该可以工作,即:print {y:x for x,z in scrabble_scores for y in z} -
{"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 loops for-loop nested list-comprehension