将列表合并为字典,保留重复键的第一个值。

3
我想要合并两个具有重复键的列表,并保留第一个值而不是最后一个值。 当执行以下操作时:
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 = dict(zip(keys, values))

它返回:{'HT202039': 0.8722470299246854,'HT206627': 0.48326164037445074,'HT212048': 0.4720068674708344,'HT203905': 0.46248035502320567}

但我希望保留键的第一个值,所以它应该像这样:

{'HT202039': 0.9527516324191851, 'HT206627': 0.48326164037445074, 'HT212048': 0.4720068674708344, 'HT203905': 0.46248035502320567}

提前致谢。


如果您删除dict()闭包,您将看到重复项未被删除。我建议调整逻辑以适应您想要的内容,而不是将其包装为dict(),然后尝试更改行为。 - pypalms
2个回答

3

尝试向后迭代:

dictionary = dict(zip(reversed(keys), reversed(values)))
print(dictionary)

输出:

{
    "HT203905": 0.46248035502320567,
    "HT212048": 0.4720068674708344,
    "HT206627": 0.48326164037445074,
    "HT202039": 0.9527516324191851,
}

1
dictionary  = {}
for k,v in zip(keys, values):
    if k not in dictionary :
        dictionary [k] = v

输出:

{'HT202039': 0.9527516324191851,
 'HT206627': 0.48326164037445074,
 'HT212048': 0.4720068674708344,
 'HT203905': 0.46248035502320567}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接