在python中更改重复值

2024-09-27 22:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本数列字典,例如:

tDict = {1:[400,200,400,100,0],2:[100,200,300,400,400],3:[200,200,200,100,100]}

我不允许在列表中有重复的值,所以我的策略是迭代并用递增的值替换重复的值。这将产生:

{1:[400,200,401,100,0],2:[100,200,300,400,401],3:[200,201,202,100,101]

我尝试了多种计数器组合等来实现这一点:

for k,v in tdict.items():
    for x in range(len(v)):
        for y in range(len(v):
            if v[x]==v[y] and y!0
                v[y]+=1

等等(我对python很陌生,你可能猜得到)。任何帮助都将不胜感激。你知道吗


Tags: andin列表forlenif字典计数器
2条回答

这里有一种方法^{}从每个列表构建一个新的dict,然后在发现整数的新实例时递增count对象。然后将当前计数添加到数字中:

from itertools import count

for k, v in tDict.items():
   d = {k: count() for k in v}
   tDict[k] = [x+next(d[x]) for x in v]

print tDict
# {1: [400, 200, 401, 100, 0], 
#  2: [100, 200, 300, 400, 401], 
#  3: [200, 201, 202, 100, 101]}

试试这个:

for k, v in tDict.iteritems():
   new_list = []
   for item in v:
       while item in new_list:
           item += 1
       new_list.append(item)
   tDict[k] = new_list

相关问题 更多 >

    热门问题