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'}
帮我
最佳答案
列表理解中的逻辑很好。您可以通过更改来验证
print {x:y for x,z in scrabble_scores for y in z}
至
print [(x,y) for x,z in scrabble_scores for y in z]
打印出来
[(1, 'E'), (1, 'A'), (1, 'O'), (1, 'I'), (1, 'N'), (1, 'R'), (1, 'T'), (1, 'L'), (1, 'S'), (1, 'U'), (2, 'D'), (2, 'G'), (3, 'B'), (3, 'C'), (3, 'M'), (3, 'P'), (4, 'F'), (4, 'H'), (4, 'V'), (4, 'W'), (4, 'Y'), (5, 'K'), (8, 'J'), (8, 'X'), (10, 'Q'), (10, 'Z')]
您的实现无法正常工作的原因是,字典中的每个键都必须唯一。因此,当您设置
1:A
时,先前的key:value
对1:E
被覆盖。也许您正在寻找字母作为关键?如果是这样,则只需交换x和y:
print {y:x for x,z in scrabble_scores for y in z}