我有一个包含字典(List[Dict, Dict, ...]
)的列表,我想基于两个键对列表进行uniqify,但我想保留字典中另一个键的值,以确保在我想保留的键中创建一个列表不会丢失它.我使用Python编写代码.如果有什么意义的话.确切地说是x.
假设我有以下三个键的字典列表:number
、favorite
和color
.我想使用键number
和favorite
对列表元素进行uniqify.然而,对于具有相同值number
和favorite
的字典,我想在键color
下添加一个列表,以确保对于相同的number
和favorite
组合,我有所有的color
.这个列表也应该是唯一的,因为对于同一个组合,它不需要重复color
s.但是,如果最终结果中的键 colored颜色 只有一个元素,那么它应该是字符串而不是列表.
lst = [
{'number': 1, 'favorite': False, 'color': 'red'},
{'number': 1, 'favorite': False, 'color': 'green'},
{'number': 1, 'favorite': False, 'color': 'red'},
{'number': 1, 'favorite': True, 'color': 'red'},
{'number': 2, 'favorite': False, 'color': 'red'}]
使用前面提到的uniqify,我将得到以下结果:
lst = [
{'number': 1, 'favorite': False, 'color': {'red', 'green'}},
{'number': 1, 'favorite': True, 'color': 'red'},
{'number': 2, 'favorite': False, 'color': 'red'},
]
请注意,red
只有一个实例,其中number
是1
,favorite
是False
,尽管它在未被限定之前在列表中出现了两次.还要注意的是,当第二个dict中的键color
只有一个元素时,它是一个字符串而不是一个列表.