我有一个包含字典的列表( List[Dict, Dict, ...]
),我想根据两个键统一列表,但我想保留字典中另一个键的值以确保我不会丢失它通过在我想保留的密钥中列出一个列表。我正在使用 Python 作为代码。确切地说,如果它对 Python 3.x 有任何意义。
假设我有以下包含三个键的字典列表: number
、 favorite
和 color
。我想使用键 number
和 favorite
来统一列表元素。但是对于具有相同值 number
和 favorite
的字典,我想在键下添加一个列表 color
color
s 用于 number
和 favorite
的相同组合。这个列表也应该是唯一的,因为它不需要重复的 color
相同的组合。但是,如果最终结果中的键颜色只有一个元素,则它应该是一个字符串而不是列表。
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'},
]
Note that there is only one instance of red
where the number
is 1
and favorite
is False
even though在被统一之前,它在列表中出现了两次。另请注意,当第二个字典中的键只有一个元素 color
时,它是一个字符串而不是列表。
原文由 KaanTheGuru 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用纯 python,您可以插入
OrderedDict
以保留插入顺序:这也可以使用 pandas
GroupBy
API 轻松完成:如果需要单个元素的字符串条件,可以使用