如何使用字典分离重复值和唯一值



我正试图找到一种方法来从列表中分离重复和唯一的数字。我被告知要用字典进行探索。我可以将值放入字典中以消除重复,但我有点迷失了。

我也不能得到完全相同的输出(它看起来像一个循环)。

输入:

2
16
25
2
49
75
49
49

输出:

Non-duplicates:
16
25
75
Duplicates:
2
49
# duplicate_values = []
# unique_values = []
for x in lst:
if lst.count(x) == 1:
unique_values.append(x)
elif x not in duplicate_values:
duplicate_values.append(x)

创建一个空字典

遍历输入列表中的每个数字。

如果该数字在字典中不存在,则将其与值1相加。否则,如果它已经存在,则在其值上加1。

唯一的数字将是字典中恰好为1的数字。所有其他的数字都是重复的

删除重复项最简单的方法是'set()'方法

你的代码有不正确的逻辑,你正在计算值并比较它是否等于1,但由于有多个值,它将进入下一步,你的else,在这里它不会添加重复的值。

list_input = [2,16,25,2,49,75,49,49]
unique_values = []
for x in list_input:
if x not in unique_values:
unique_values.append(x)
print(unique_values)

输出:

[16, 25, 75, 2, 49]

解决方案:

list_input = [2,16,25,2,49,75,49,49]

your_dict = {
'unique': [],
'duplicate': [],
}
for x in list_input:
if x not in your_dict['unique']:
your_dict['unique'].append(x) 
else:
your_dict['duplicate'].append(x) 
print(your_dict)

输出
{'unique': [2, 16, 25, 49, 75], 'duplicate': [2, 49, 49]}

榜样

list中0个重复项:


list_input = [2,16,25,2,49,75,49,49]
use_set = list(set(list_input))
print(use_set)

输出
[2, 75, 16, 49, 25]

0重复到dict:


to_dict = {}
for x, y in enumerate(use_set):
to_dict[x] = y

print(to_dict)

输出
{0: 2, 1: 75, 2: 16, 3: 49, 4: 25}

最新更新