Python:在列表中标记重复项

2024-09-30 08:29:38 发布

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

我有一个无序的python列表,我想创建第二个列表,它告诉我们第一个列表中的值是重复的还是唯一的。 对于副本,我必须将它们标记为duplicate1、duplicate2等。 我将从这些列表中创建一个字典,稍后将在pandas dataframe中使用这些列表

我被第二张名单的逻辑给卡住了,有人能帮我一下吗

first_List = ['a',  'b', 'c', 'a', 'd', 'c']

预期产出

second_List = ['dup1', 'unique', 'dup1', 'dup2', 'unique', 'dup2']

Tags: 标记dataframepandas列表字典副本逻辑list
2条回答

first_List = ['a',  'b', 'c', 'a', 'd', 'c']

d = {i:'' for i in first_List if first_List.count(i) > 1}
second_List = ['unique' if i not in d.keys() else f'dup{list(d.keys()).index(i)+1}' for i in first_List]

它很好用

这和

d = {i:'' for i in first_List if first_List.count(i) > 1}
second_List = list()
for i in first_List:
    text = 'unique' if i not in d.keys() else f'dup{list(d.keys()).index(i)+1}'
    second_List.append(text)

您可以通过index迭代列表,对于给定index的列表值,检查它是否重复(isDuplicate)布尔值在下面的代码中创建,如果它是重复项,则计算给定index的当前值在列表中出现的次数,并将字符串附加到second_List

second_List = []
for i in range(len(first_List)):
    isDuplicate = first_List.count(first_List[i]) > 1
    if isDuplicate:
        count = first_List[:i+1].count(first_List[i])
        second_List.append(f'dup{count}')
    else:
        second_List.append('unique')

输出

['dup1', 'unique', 'dup1', 'dup2', 'unique', 'dup2']

如果您感兴趣,这里还有等效的列表理解

>>> [f'dup{first_List[:i+1].count(first_List[i])}' 
... if first_List.count(first_List[i]) > 1 
... else 'unique'
... for i in range(len(first_List))]

['dup1', 'unique', 'dup1', 'dup2', 'unique', 'dup2']

相关问题 更多 >

    热门问题