我有一个由列表组成的列表,每个子列表中都有4个项目(整数和浮点数)。我的问题是我想删除那些index = 1和index = 3与其他子列表匹配的子列表。
[[1, 2, 0, 50], [2, 19, 0, 25], [3, 12, 25, 0], [4, 18, 50, 50], [6, 19, 50, 67.45618854993529], [7, 4, 50, 49.49657024231138], [8, 12, 50, 41.65340802385248], [9, 12, 50, 47.80600357035001], [10, 18, 50, 47.80600357035001], [11, 18, 50, 53.222014760339356], [12, 18, 50, 55.667812693447615], [13, 12, 50, 41.65340802385248], [14, 12, 50, 47.80600357035001], [15, 13, 50, 47.80600357035001], [16, 3, 50, 49.49657024231138], [17, 3, 50, 49.49657024231138], [18, 4, 50, 49.49657024231138], [19, 5, 50, 49.49657024231138]]
例如,[7、4、50、49.49657024231138]和[18、4、50、49.49657024231138]在索引1和3处具有相同的整数。因此,我想删除一个,这无关紧要。
我看了一些代码,这些代码使我可以在单个索引的基础上执行此操作。
def unique_items(L):
found = set()
for item in L:
if item[1] not in found:
yield item
found.add(item[1])
我一直在使用此代码,该代码允许我删除列表,但仅基于单个索引即可(我还没有完全理解代码,但是它可以正常工作。)
因此,问题是仅基于列表列表中index = 1和index = 3的重复值来删除子列表。
如果需要比较(item[1], item[3])
,请使用元组。元组是可哈希化的类型,因此可以用作set成员或dict键。
def unique_items(L):
found = set()
for item in L:
key = (item[1], item[3]) # use tuple as key
if key not in found:
yield item
found.add(key)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句