我有以下示例列表:
my_list = [
{
'data': {
'color': 'white'
},
'name': 'item1'
},
{
'data': {
'color': 'white',
'property': 'value1'
},
'name': 'item2'
},
{
'data': {
'color': 'white',
'property': 'value1'
},
'name': 'item3'
},
{
'data': {
'color': 'black',
'property': 'value1'
},
'name': 'item4'
},
{
'data': {
'color': 'white',
'property': 'value1',
'custom': 'valueA'
},
'name': 'item5'
},
{
'data': {
'color': 'white'
},
'name': 'item6'
},
]
我想将词典项目的名称值与共享相同“数据”值的项目的其他名称值分组。
所以我想为这个特定的例子得到这个结果: result = [('item1', 'item6'), ('item2', 'item3')]
根据要求更新:我尝试使用groupby分隔它们,但没有成功:
import itertools
for key, group in itertools.groupby([item["data"] for item in my_list]):
print("-"*10)
for data in group:
print(data)
out = {}
for d in my_list:
out.setdefault(tuple(d['data'].items()), []).append(d['name'])
out = [v for v in out.values() if len(v) > 1]
print(out)
印刷品:
[['item1', 'item6'], ['item2', 'item3']]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句