这个问题可能有相似之处,但我的情况有点不同。我试着根据我的问题调整这些答案,但做不到。所以事情是这样的:我有这个列表:
例如,[(['c', 'a', 'b'], 10), (['c', 'a', 'b'], 9),(['h','b'],2)]
。
我希望通过保留与较大数字相关联的元组来删除此列表中的重复项。因此,列表应如下所示:
[(['c', 'a', 'b'], 10),(['h','b'],2)]
有谁可以帮我?内部列表中项目的顺序非常重要。谢谢
发布于 2010-10-24 17:10:35
>>> lst = [(['c', 'a', 'b'], 10), (['c', 'a', 'b'], 9),(['h','b'],2)]
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i, j in lst:
d[tuple(i)] = max(d[tuple(i)], j) # assuming positive numbers
>>> d
defaultdict(<class 'int'>, {('h', 'b'): 2, ('c', 'a', 'b'): 10})
发布于 2010-10-24 17:18:49
如果如您的示例所示,项已按数字排序(在本例中为反向排序),则可以执行以下操作:
d = dict(reversed(lst))
list(d.iteritems())
dict()
函数的默认行为是存储最后看到的键的值。因此,如果它们以逆序排序,则在逆序迭代时最后看到的值将是最大的。否则,使用@SilentGhost`s的answer。
https://stackoverflow.com/questions/4009304
复制相似问题