사전에서 중복 항목을 제거하십시오
-
06-07-2019 - |
문제
사전을 통해 목록에서 중복 항목을 제거하려고합니다.
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
제휴하지 않습니다 StackOverflow