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

vjhs03f7  于 2023-04-10  发布在  Python
关注(0)|答案(2)|浏览(133)

我试图找到一种方法来从列表中分离重复和唯一的数字。我被告知要使用字典进行探索。我可以将值放入字典中以消除重复,但我有点迷路了。
我也永远无法得到完全相同的输出(它看起来像一个循环)。
输入:

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)
2sbarzqh

2sbarzqh1#

创建一个空字典。
迭代输入列表中的每个数字。
如果该数字在字典中不存在,则将其添加值1。否则,如果它已经存在,则将其值添加1。
唯一的数字将是字典中值正好为1的数字。所有其他数字都是重复的。

qyyhg6bp

qyyhg6bp2#

删除重复项的最简单方法是'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]}

Example set
列表中无重复项:

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

use_set = list(set(list_input))

print(use_set)

输出

[2, 75, 16, 49, 25]

对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}

相关问题