如何将Python字典数组内的数值替换为前缀匹配的对应键名
实现思路
- 先基于原字典的键提取「数字前缀-完整键名」的映射关系,每个键下划线前的数字部分即为对应前缀
- 遍历原字典每个键对应的数值列表,逐个判断数值是否存在于映射中,存在则替换为对应的完整键名,不存在则保留原数值
完整代码
# 原始字典 original_dict = { '6690_team': [6620, 6689], '6620_mdas': [6192, 6573], '6573_megan': [6535, 6572], '6572_regionalise national league north': [6567, 6570], '6570_sacha baron cohen': [6551, 6569], '6569_sacha baron cohen': [6380, 6568], '6568_first week': [6555, 6566] } # 构造前缀映射表 prefix_map = {} for key in original_dict: prefix = int(key.split('_')[0]) prefix_map[prefix] = key # 生成替换后的新字典 result_dict = {} for k, val_list in original_dict.items(): result_dict[k] = [prefix_map.get(num, num) for num in val_list] # 打印验证结果 import pprint pprint.pprint(result_dict)
输出结果
运行后得到的result_dict严格匹配替换规则:
{ '6690_team': ['6620_mdas', 6689], '6620_mdas': [6192, '6573_megan'], '6573_megan': [6535, '6572_regionalise national league north'], '6572_regionalise national league north': [6567, '6570_sacha baron cohen'], '6570_sacha baron cohen': [6551, '6569_sacha baron cohen'], '6569_sacha baron cohen': [6380, '6568_first week'], '6568_first week': [6555, 6566] }
内容的提问来源于stack exchange,提问作者Man24
相关产品推荐
相关产品推荐

