从嵌套字典提取两个列表:编程新手的技术问询
从嵌套字典提取列表的解决方案
嘿,作为编程新手,处理嵌套字典确实需要一点点小技巧,我来帮你搞定这个问题!先假设你想要提取的是玩家ID列表和玩家全名列表(如果是其他需求,你可以随时调整下面的代码~)
首先,先把你的字典补全(保持原有的结构):
player_dict = { 'player2': {'player': 'player2', 'firstname': 'Ross', 'lastname': 'Estrada'}, 'player3': {'player': 'player3', 'firstname': 'Melvin', 'lastname': 'Graves'}, 'player0': {'player': 'player0', 'firstname': 'Alfredo', 'lastname': 'Hopkins'}, 'player1': {'player': 'player1', 'firstname': 'Jay', 'lastname': 'Ramos'}, 'player6': {'player': 'player6', 'firstname': 'Claudia', 'lastname': 'Brown'}, 'player7': {'player': 'player7', 'firstname': 'Luna', 'lastname': 'Carter'} }
方法1:用列表推导式快速提取(推荐)
列表推导式是Python里处理这种批量数据提取的高效方式,代码简洁易懂。
提取玩家ID列表
有两种方式,如果你确定字典的key就是玩家ID,直接取keys转成列表就行:
player_ids = list(player_dict.keys()) print(player_ids) # 输出: ['player2', 'player3', 'player0', 'player1', 'player6', 'player7']
如果想从每个子字典的player字段提取(更严谨,避免key和字段不一致的情况):
player_ids = [player_info['player'] for player_info in player_dict.values()]
提取玩家全名列表
把每个子字典里的firstname和lastname拼接起来:
full_names = [f"{info['firstname']} {info['lastname']}" for info in player_dict.values()] print(full_names) # 输出: ['Ross Estrada', 'Melvin Graves', 'Alfredo Hopkins', 'Jay Ramos', 'Claudia Brown', 'Luna Carter']
方法2:用循环逐步提取(适合新手理解)
如果你觉得列表推导式有点抽象,用普通的for循环也能实现,每一步都很清晰:
# 提取玩家ID列表 player_ids = [] for info in player_dict.values(): player_ids.append(info['player']) # 提取玩家全名列表 full_names = [] for info in player_dict.values(): full_name = info['firstname'] + ' ' + info['lastname'] full_names.append(full_name)
如果你的需求是提取其他列表(比如单独的名字列表、姓氏列表),只需要修改循环或列表推导式里的字段就行啦~
内容的提问来源于stack exchange,提问作者Ross O'Reilly
相关产品推荐
相关产品推荐

