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添加到重复的数字?
答案 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]])