我正试图找到一种方法来从列表中分离重复和唯一的数字。我被告知要用字典进行探索。我可以将值放入字典中以消除重复,但我有点迷失了。
我也不能得到完全相同的输出(它看起来像一个循环)。
输入:
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}