如何使字典值唯一并保留每个值对应的最新键值对
解决字典值去重并保留最后出现键值对的问题
要实现字典值去重且保留每个值对应的最后一组键值对,核心思路是利用遍历过程中覆盖重复值对应的键,具体步骤如下:
方法实现(Python 3.7+)
Python 3.7及以上的字典默认保持插入顺序,直接遍历原字典即可实现需求:
original_dict = {"A":1, "B":1, "C":1, "D":2, "E":2, "F":3} # 用临时字典记录每个值对应的最后一个键 temp_map = {} for key, val in original_dict.items(): temp_map[val] = key # 重复值会被后续的键覆盖,自动保留最后出现的键 # 反转临时字典的键值对,得到目标结果 result_dict = {v: k for k, v in temp_map.items()} print(result_dict) # 输出: {'C': 1, 'E': 2, 'F': 3}
为什么反向查找的方法不生效?
你之前尝试的“获取唯一值再反向查找键”的思路,通常会拿到该值第一次出现的键,而不是最后一次。因为反向查找时,字典的键具有唯一性,只会返回第一个匹配的结果。而上面的方法通过遍历过程中不断更新值对应的键,天然就能保留最后一次出现的键值对。
兼容Python 3.6及以下版本
如果需要兼容更早的Python版本(字典无序),可以使用collections.OrderedDict来保证遍历顺序:
from collections import OrderedDict original_dict = OrderedDict({"A":1, "B":1, "C":1, "D":2, "E":2, "F":3}) temp_map = {} for key, val in original_dict.items(): temp_map[val] = key result_dict = {v: k for k, v in temp_map.items()}
内容的提问来源于stack exchange,提问作者Uno Guerta
相关产品推荐
相关产品推荐

