목록으로 구성된 목록이 있고 각 하위 목록에는 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])
튜플을 사용하십시오. 튜플은 해시 가능한 유형이므로 세트 멤버 또는 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] 삭제
몇 마디 만하겠습니다