Skip to main content
 首页 » 编程设计

python之根据重复的列表值减少字典,无论列表的顺序如何

2025年05月04日17youxin

我在 Python 中有一个 dict,如下所示:

{ 
    'key_1': ['3', '2', '4', '4', '5', '6'], 
    'key_2': ['3', '4', '8', '7', '5', '1'], 
    'key_3': ['7', '2', '8', '4', '2', '5'], 
    'key_4': ['3', '2', '4', '4', '5', '6'], 
    'key_5': ['8', '8', '4', '4', '4', '1'], 
    'key_6': ['9', '3', '3', '3', '6', '1'], 
    'key_7': ['4', '2', '3', '6', '4', '5'] 
} 

我需要将其减少到只有唯一列表,而不考虑列表中的顺序。例如,上面的内容将简化为:

{ 
    'key_1': ['3', '2', '4', '4', '5', '6'], 
    'key_2': ['3', '4', '8', '7', '5', '1'],  
    'key_3': ['7', '2', '8', '4', '2', '5'], 
    'key_5': ['8', '8', '4', '4', '4', '1'], 
    'key_6': ['9', '3', '3', '3', '6', '1'] 
} 

因为 key_1、key_4 和 key_7 在原始字典中都被认为是重复的(key_1 和 key_4 完全相同,而 key_7与 key_1 和 key_4 相同,但顺序不同)。

换句话说,如果任何列表包含相同的数字,无论顺序如何,都应被视为重复。

请您参考如下方法:

您可以记录您已经看到的任何序列(排序以确保重复项中的顺序相同):

mydict = { 
    'key_1': ['3', '2', '4', '4', '5', '6'], 
    'key_2': ['3', '4', '8', '7', '5', '1'], 
    'key_3': ['7', '2', '8', '4', '2', '5'], 
    'key_4': ['3', '2', '4', '4', '5', '6'], 
    'key_5': ['8', '8', '4', '4', '4', '1'], 
    'key_6': ['9', '3', '3', '3', '6', '1'], 
    'key_7': ['4', '2', '3', '6', '4', '5'] 
} 
 
result = {} 
seen = set() 
 
for k, v in mydict.items(): 
    sorted_v = tuple(sorted(v)) 
    if sorted_v not in seen: 
        result[k] = v 
        seen.add(sorted_v) 
 
print(result)