如何将含重复键的两个列表合并为字典并保留键的首个值
保留重复键首个值的字典合并方法
当使用dict(zip(keys, values))合并含重复键的列表时,后续重复键会覆盖之前的条目,导致最终字典只保留每个键的最后一个对应值。要保留首个值,可通过以下方法实现:
方法一:遍历键值对,仅新增未存在的键
手动遍历键值对,仅当键未在字典中时才存入对应值,避免后续重复键覆盖首个值:
keys = ['HT202039', 'HT202039', 'HT202039', 'HT202039', 'HT202039', 'HT202039', 'HT202039', 'HT206627', 'HT212048', 'HT203905'] values = [0.9527516324191851, 0.9415256727935831, 0.9393113073236541, 0.9258447486583915, 0.8796238049268982, 0.8760262341331504, 0.8722470299246854, 0.48326164037445074, 0.4720068674708344, 0.46248035502320567] dictionary = {} for key, val in zip(keys, values): if key not in dictionary: dictionary[key] = val
运行上述代码后,得到的结果符合预期:
{'HT202039': 0.9527516324191851, 'HT206627': 0.48326164037445074, 'HT212048': 0.4720068674708344, 'HT203905': 0.46248035502320567}
方法二:利用dict.fromkeys初始化后填充
先通过dict.fromkeys创建包含所有键的字典(初始值为None),再遍历键值对填充未赋值的键:
dictionary = dict.fromkeys(keys) for key, val in zip(keys, values): if dictionary[key] is None: dictionary[key] = val
该方法与方法一逻辑一致,最终结果相同。
内容的提问来源于stack exchange,提问作者devdon
相关产品推荐
相关产品推荐

