你觉得dict(test)的输出怎么样?
{'ent1': 4, 'ent2': 3.5, 'ent3': 4.5}
或者您可能希望将其转换回元组列表
>>> list(dict(test).items())
[('ent1', 4), ('ent2', 3.5), ('ent3', 4.5)]
编辑:这将保留最后一个分配的值,但您也可以通过首先反转您的列表来保留第一个分配的值:
>>> list(dict(reversed(test)).items())
[('ent2', 12), ('ent1', 24), ('ent3', 4.5)]
Edit2:如果您还想保留列表顺序,这似乎是一个很好的单线解决方案(受 Julien 的回答启发):
>>> [(uk,next(v for k,v in test if k == uk)) for uk in dict(test).keys()]
[('ent1', 24), ('ent2', 12), ('ent3', 4.5)]
最后,你可以使用 functools.reduce 获得另一个单线:
>>> from functools import reduce
>>> reduce(lambda lu,i:i[0] in dict(lu).keys() and lu or lu+[i], test, [])
[('ent1', 24), ('ent2', 12), ('ent3', 4.5)]
解释:lu 是只有唯一键的列表,i 是 test 列表中的下一项。如果i[0],即下一个元素的key已经在lu中,则保留lu,否则追加i。