删除字典中的重复项

时间:2009-11-28 19:15:26

标签: python duplicate-removal

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

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

有什么问题?

5 个答案:

答案 0 :(得分:11)

你应该写:

d[list[i]] = 1

但为什么不这样做?

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

另外,不要使用内置函数名作为变量名。它可能导致混乱的错误。

答案 1 :(得分:4)

除了其他人所说的,这样做是不可思议的:

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

当你可以这样做时:

for item in lst:
    do stuff with item

答案 2 :(得分:3)

dict是类型,你的意思是d[list[i]] = 1

添加:这指出了代码中的实际错误。但是,其他人提供的答案提供了更好的方法来实现您的目标。

答案 3 :(得分:3)

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

通过查看代码,您似乎不会对元素的排序感到困扰,只关心它的唯一性。在这种情况下,set()可能是更好的数据结构。

代码中的问题只是使用函数参数名称,该名称不是内置类型列表的名称,后面是表达式dict[list[i]]中的类型dict。

答案 4 :(得分:0)

请注意,使用list(set(seq))可能会更改其余项目的排序。如果保留他们的订单很重要,您需要复制一份清单:

items = set()
copy = []
for item in seq:
    if not item in items:
        copy.add(item)
        items.append(item)
seq = copy