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:value1:E被覆盖。

也许您正在寻找字母作为关键?如果是这样,则只需交换x和y:

print {y:x for x,z in scrabble_scores for y in z}

09-11 19:25