我在 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)
