【发布时间】:2021-04-24 15:07:53
【问题描述】:
我正在寻找一种更优雅的方法来将此字典列表转换为单个合并字典,其中键“sku”作为合并键。该列表实际上是 Pydantic 模型,很容易变成字典。我没有找到使用 Pydantic 的更优雅的解决方案。
dicts/pydanticinstances 列表
[a for a in m]
[
PackMapPydantic(id=60, pack_sku='PACKFAC01', sku='FAC01', prop_name='Facebook Username'),
PackMapPydantic(id=61, pack_sku='PACKFAC01', sku='FAC02', prop_name='Facebook Username'),
PackMapPydantic(id=62, pack_sku='PACKFAC01', sku='FAC03', prop_name='Facebook Username'),
PackMapPydantic(id=63, pack_sku='PACKFAC01', sku='FAC05', prop_name='Facebook Username'),
PackMapPydantic(id=64, pack_sku='PACKFAC01', sku='FAC06', prop_name='Facebook Username'),
PackMapPydantic(id=70, pack_sku='PACKFAC01', sku='FAC01', prop_name='Channel Name'),
PackMapPydantic(id=71, pack_sku='PACKFAC01', sku='FAC02', prop_name='Channel Name'),
PackMapPydantic(id=72, pack_sku='PACKFAC01', sku='FAC03', prop_name='Channel Name'),
PackMapPydantic(id=73, pack_sku='PACKFAC01', sku='FAC05', prop_name='Channel Name'),
PackMapPydantic(id=74, pack_sku='PACKFAC01', sku='FAC06', prop_name='Channel Name'),
PackMapPydantic(id=87, pack_sku='PACKFAC01', sku='FAC01', prop_name='__uk_avatar (direct link)'),
PackMapPydantic(id=88, pack_sku='PACKFAC01', sku='FAC02', prop_name='__uk_avatar (direct link)'),
PackMapPydantic(id=89, pack_sku='PACKFAC01', sku='FAC03', prop_name='__uk_avatar (direct link)'),
PackMapPydantic(id=90, pack_sku='PACKFAC01', sku='FAC06', prop_name='__uk_avatar (direct link)')
]
期望的输出:
[
{
'sku': 'FAC05',
'prop_name': [
'Username',
'Channel'
]
},
{
'sku': 'FAC01',
'prop_name': [
'Username',
'Channel',
'__uk_avatar (direct link)'
]
},
{
'sku': 'FAC06',
'prop_name': [
'Username',
'Channel',
'__uk_avatar (direct link)'
]
},
{
'sku': 'FAC02',
'prop_name': [
'Username',
'__uk_avatar (direct link)'
]
},
{
'sku': 'FAC03',
'prop_name': [
'Username',
'Channel',
'__uk_avatar (direct link)'
]
}
]
目前的解决方案:
for sku in skus_distinct:
this_assets = []
for item in items_listed:
if item['sku'] == sku:
# item = list(item)
this_assets.append(item['prop_name'])
now = {'sku': sku,
'prop_name': this_assets }
print(now)
【问题讨论】:
-
您可以在code review platform 上发布此问题,因为您想找到改进代码的方法。请查看此link 以了解这些平台之间的区别。
标签: python data-structures pydantic