检查列表Python中的重复项

时间:2017-09-04 06:34:34

标签: python-2.7 list duplicates

dataset:
raw_data = [[1, John, 23, 32], [1, Jane, 10, 20], [1, Max, 90, 70], [2, Harry, 32, 56]]

list = []
for i in raw_data:
    if i[0] in list:
        x = i[0] + 0.1
        list.append(x)
    else:
        list.append(i[0])

我实际上想获得list = [1,1.1,1.2,2]

但是,我的代码给出了我的list = [1,1.1,1.1,2]

如何在列表中运行另一个循环,将0.1添加到重复的数字?

1 个答案:

答案 0 :(得分:0)

您可以使用字典来缓存增量:

cache = {}
result = []
for i in raw_data:
    if i[0] in cache:
        cache[i[0]] += 0.1
    else:
        cache[i[0]] = 1

    result.append(cache[i[0]])

修改:
使用defaultdict可以保存循环内的条件。然而,无论是否更优雅,都是在旁观者的眼中:

from collections import defaultdict
cache = defaultdict(lambda : 0.9)       
result = []
for i in raw_data:
    cache[i[0]] += 0.1
    result.append(cache[i[0]])