用一个dict列表,比如下面的list1
[
{'subId': 0, 'mainIds': [0]},
{'subId': 3, 'mainIds': [0, 3, 4, 5], 'parameter': 'off', 'Info': 'true'}
]
需要转换为以下格式
[
{'mainId': 0, 'subIds':[0,3]},
{'mainId': 3, 'subIds': [3] },
{'mainId': 4, 'subIds': [3] },
{'mainId': 5, 'subIds': [3]}
]
到目前为止尝试了什么
finalRes = []
for i in list1:
subId = i['subId']
for j in i['mainIds']:
res = {}
res[mainId] = j
res['subIds'] = []
res['subIds'].append(subId)
finalRes.append(res)
这使一些东西更接近所需的输出。需要获得上述输出的帮助。这种操作有什么流行的名字吗(比如一对多对多对一?)
[
{'mainId': 0, 'subIds':[0]},
{'mainId': 0, 'subIds':[3]}
{'mainId': 3, 'subIds': [3]},
{'mainId': 4, 'subIds': [3]},
{'mainId': 5, 'subIds': [3]}
]
这里有一个使用理解和^{} 的解决方案。首先将列表转换为集合,以进行快速成员资格测试;然后直接构建结果。它的效率不如
defaultdict
解决方案使用
defaultdict
可以轻松实现这种连接:相关问题 更多 >
编程相关推荐