这个字典理解可能吗?

Is this Dictionary comprehension possible?

我正在尝试创建一本具有字典理解力的字典。 该字典应如下所示:

到目前为止我试过:

player_objects = ['list', 'of', 'player_objects']
extended_data = {player_name:{'Money':100, 'Items'=['Item1', 'Item2']}}
data = {player_object:extended_data.get(player).get('Items') for player in extended_data for player_object in player_objects}
#expected output:
data = {player_object:['list', 'of', 'items']}

但是这个returns一个所有玩家都有最后一个玩家的Items的字典,我也想出这个来自for player_object in player_objects。 我可以只通过字典理解得到我想要的字典吗?

虽然可能有更 Pythonic 的解决方案,但我确实有一个针对您的原始代码的修复程序。问题是您 dict 理解中的双重 for。当你这样做时,你会独立地迭代 player_objectsextended_data。相反,迭代其中一个并使用这些名称访问另一个 dict。您也不能在该理解中使用 self - 它不引用任何内容,除非您的代码恰好位于 class 方法中。

这是一个模型:

player_objects = ['player_a', 'player_b', 'player_c']
extended_data = {
    'player_a': {'Money': 100, 'Items': ['dagger', 'armor']},
    'player_b': {'Money': 50, 'Items': ['sword', 'shield']},
    'player_c': {'Money': 20, 'Items': ['boots', 'staff']},
}

items_by_player = {player: extended_data[player].get('Items') for player in player_objects}

print(items_by_player)
# {'player_a': ['dagger', 'armor'], 'player_b': ['sword', 'shield'], 'player_c': ['boots', 'staff']}