Python 2.7 检查Python列表中的重复项

Python 2.7 检查Python列表中的重复项,python-2.7,list,duplicates,Python 2.7,List,Duplicates,我实际上希望获得list=[1,1.1,1.2,2] 但是,我的代码给出了我的列表=[1,1.1,1.1,2] 如何在列表中运行另一个循环,将0.1添加到重复的数字中?您可以使用字典来缓存增量: 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:

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

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


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

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

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])
编辑:
使用将保存循环内的条件。不过,在旁观者眼中,它是否更优雅:

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]])

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

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])
编辑:
使用将保存循环内的条件。不过,在旁观者眼中,它是否更优雅:

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]])

我通读了你的代码,但我不太明白你在做什么。然而,这两种代码的输出并不完全正确。输出:
[1,1.1,1.20000000002,1]
@TimOng本质上,我为遇到的每个值保留一个缓存,并在每次遇到值时将其递增
0.1
。您看到的结果就是浮点数学固有的不精确性(例如,尝试在python中计算
1.1+0.1
)。您可以查看关于将其截断为小数点后一位的解决方案。我通读了您的代码,但我不太明白您在做什么。然而,这两种代码的输出并不完全正确。输出:
[1,1.1,1.20000000002,1]
@TimOng本质上,我为遇到的每个值保留一个缓存,并在每次遇到值时将其递增
0.1
。您看到的结果就是浮点数学固有的不精确性(例如,尝试在python中计算
1.1+0.1
)。您可以查看有关将其截断为小数点后一位的解决方案。