How do you like the output of 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)]
编辑2:如果你也想保留列表顺序,这似乎是一个很好的单行本解决方案(受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]
,即下一个元素的键已经在lu
中,我们保留lu
,否则我们追加i
。