我正在尝试通过字典删除列表中的重复项目:

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 [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