我正在尝试将字典列表从一种格式转换为另一种格式:
输入格式:
safe_directions = [{'user':'user1', 'direction':'down' }, {'user':'user1', 'direction':'right' }, {'user':'user1', 'direction':'left'}, {'user':'user2', 'direction':'up'}]
我正在尝试将其转换为:
输出 :
[
{'user':'user1',
'run': {'up':False, 'down':True, 'right':True, 'left':True}
},
{'user':'user2',
'run': { 'up':True, 'down':False, 'right':False, 'left':False}
}
]
我正在尝试对此进行转换,但我觉得自己被 python 对象引用困住了。最终 user2 的所有运行都标记为 True。这是我的代码:
def is_safe():
template = {'user':None,
'run':{
'up':False,
'down':False,
'right':False,
'left':False
}
}
safe_directions = [{'user':'user1', 'direction':'down' }, {'user':'user1', 'direction':'right' }, {'user':'user1', 'direction':'left'}, {'user':'user2', 'direction':'up'}]
direction_map = {}
if not safe_dir['user'] in direction_map.keys():
direction_map[safe_dir['user']] = template.copy()
# The above line seems does not create new copy?
print(direction_map.values())
我的输出:
[
{'user': 'user1',
'run': {'up': True, 'down': True, 'right': True, 'left': True}
},
{'user': 'user2',
'run': {'up': True, 'down': True, 'right': True, 'left': True}
}
]
在这里,我所有的跑步/方向在 Direction_map 目录中都变为 true。调试代码后发现仅维护了currrent_dir的单个引用。有人可以提出任何建议吗?
aluckdog
慕仙森
杨__羊羊
胡子哥哥
相关分类