如何删除字典中的重复值?

How to remove duplicate values in a dictionary?

我想删除字典中的重复值。

假设这是我的字典:

dict = {'X' : 
[
 {id : 1, Name: 'RandomName', Brand: 'RandomBrand'}, 
 {id: 2, Name: 'RandomName2', Brand: 'RandomBrand2'}
],
'Y': 
[
 {id: 1, Name: 'RandomName', Brand: 'RandomBrand'},
 {id: 1, Name: 'RandomName', Brand: 'RandomBrand'}
]
}

我想在删除重复项后将其作为最终结果

结果:

dict = {'X' : 
[
 {id : 1, Name: 'RandomName', Brand: 'RandomBrand'}, 
 {id: 2, Name: 'RandomName2', Brand: 'RandomBrand2'}
],
'Y': 
[
 {id: 1, Name: 'RandomName', Brand: 'RandomBrand'}
]
}

我该怎么做?

尝试理解字典:

>>> {k: [dict(t) for t in {tuple(d.items()) for d in v}] for k,v in dct.items()}
{'X': [{'id': 2, 'Name': 'RandomName2', 'Brand': 'RandomBrand2'},
       {'id': 1, 'Name': 'RandomName', 'Brand': 'RandomBrand'}],
 'Y': [{'id': 1, 'Name': 'RandomName', 'Brand': 'RandomBrand'}]}
输入:
dct = {'X': [{"id": 1, "Name": 'RandomName', "Brand": 'RandomBrand'}, 
             {"id": 2, "Name": 'RandomName2', "Brand": 'RandomBrand2'}],
       'Y': [{"id": 1, "Name": 'RandomName', "Brand": 'RandomBrand'},
             {"id": 1, "Name": 'RandomName', "Brand": 'RandomBrand'}]}

字典默认不接受重复项。仔细看,那里有 dict[str:list[dict[...]]。所以你想从列表中过滤重复的字典。

答案: 如果顺序无关紧要,并且您只想删除完全相同的重复项,请按以下方式操作:

structure = ... # your `dict` - you shouldn't use keyword as a variable name.
structure = {key: list(frozenset(tuple(d.items()) for d in value)) for key, value in st.items()}

如果顺序很重要,请将 'list' 替换为 'sorted' 并定义键以正确排序。

@Edit:如果性能也是一个问题,你不应该接受那个任务,你缺乏基础知识,引入适当的结构有点矫枉过正。

对于任何嵌套 'list_comprehension',我强烈反对,因为它很可能比我的示例表现得更差。

@Edit2: 当然,如果你想把它反转成合适的结构,你可以再玩一下。

@Edit3: example execution