문제

사전을 통해 목록에서 중복 항목을 제거하려고합니다.

def RemoveDuplicates(list):
    d = dict()

    for i in xrange(0, len(list)):
        dict[list[i]] = 1       <------- error here

    return d.keys()

그러나 그것은 다음과 같은 오류를 제기하고 있습니다.

TypeError: 'type' object does not support item assignment

문제는 무엇입니까?

도움이 되었습니까?

해결책

당신은 다음을 작성해야합니다.

d[list[i]] = 1

그러나 왜 그렇게하지 않습니까?

def RemoveDuplicates(l):
    return list(set(l))

또한 내장 기능 이름을 변수 이름으로 사용하지 마십시오. 혼란스러운 버그로 이어질 수 있습니다.

다른 팁

다른 사람들이 말한 것 외에도 이것을하는 것은 불쾌한 일입니다.

for i in xrange(0, len(lst)):
    do stuff with lst[i]

대신 할 수있는 경우 :

for item in lst:
    do stuff with item

Dict는 유형입니다 d[list[i]] = 1.

추가 : 이것은 코드의 실제 오류를 지적합니다. 그러나 다른 사람들이 제공 한 답변은 당신이 목표로하는 것을 달성 할 수있는 더 나은 방법을 제공합니다.

def remove_duplicates(myList):
    return list (set(myList))

코드를 살펴보면 요소의 순서에 대해 귀찮게하지 않고 독창성에 대해서만 관심이있는 것 같습니다. 이 경우 SET ()는 더 나은 데이터 구조가 될 수 있습니다.

코드의 문제는 단지 내장 유형 목록의 이름이 아닌 함수 인수 이름을 사용하고 나중에 표현식의 유형 Dict에서 사용하는 것입니다. dict[list[i]].

사용하십시오 list(set(seq)) 나머지 항목의 순서를 변경할 수 있습니다. 주문을 유지하는 것이 중요하다면 목록 사본을 만들어야합니다.

items = set()
copy = []
for item in seq:
    if not item in items:
        copy.add(item)
        items.append(item)
seq = copy
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top