使用python字典值构建转换器的逻辑

2024-09-28 21:38:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一段加载的json tp python字典(size\u dict):

{
 "sizeOptionName":"XS",
 "sizeOptionId":"1528",
 "sortOrderNumber":"7017"
},
{
"sizeOptionName":"S",
"sizeOptionId":"1529",
"sortOrderNumber":"7047"
},
{
"sizeOptionName":"M",
"sizeOptionId":"1530",
"sortOrderNumber":"7095"
}

我有大小Id(dictionary\u prod)的产品:

{
"catalogItemId":"7627712",
"catalogItemTypeId":"3",
"regularPrice":"0.0",
"sizeDimension1Id":"1528",
"sizeDimension2Id":"0",
}

我需要为任何产品制作这样的输出:

 result_dict = {'variant':
 [{"catalogItemId":"7627712", ...some other info...,
 'sizeName': 'XS', 'sizeId': '1525'}}]}

所以我需要转换大小ID并将其添加到新的结果对象

做这件事最好的方法是什么? 我不知道如何从大小目录中获得正确的数据

    if int(dictionary_prod['sizeDimension1Id']) > o:
        (result_dict['variant']).append('sizeName': size_dict???)

Tags: jsonsizedictionary产品prodresultdictvariant
2条回答

你的问题有点让人困惑,但看起来你有一个包含一些信息的字典列表(size\u dict),你想在包含你感兴趣的SizeOptionName的列表中查找一个特定的元素,这样你就可以读取SizeOptionID了。你知道吗

所以首先你可以把你的字典整理成一本字典而不是一张单子

    sizeDict = {"XS":{
     "sizeOptionName":"XS",
     "sizeOptionId":"1528",
     "sortOrderNumber":"7017"
    }, "S": {
    "sizeOptionName":"S",
    "sizeOptionId":"1529",
    "sortOrderNumber":"7047"
    }, ...

然后,您可以通过执行以下操作来读取所需的SizeOptionID:

    sizeDict[sizeNameYouAreLookingFor][SizeOptionID]

另一种方法是保留当前的结构,只需搜索大小为dict的词典列表

所以:

    for elem in size_dict:
        if elem.SizeOptionID == sizeYouAreLookingFor:
            OptionID = elem.SizeOptionId

或者你在问别的问题?你知道吗

正如Tommy所提到的,通过将size id映射到它们各自的字典,这是最容易实现的。你知道吗

size_dict = \
[
    {
         "sizeOptionName":"XS",
         "sizeOptionId":"1528",
         "sortOrderNumber":"7017"
    },
    {
        "sizeOptionName":"S",
        "sizeOptionId":"1529",
        "sortOrderNumber":"7047"
    },
    {
        "sizeOptionName":"M",
        "sizeOptionId":"1530",
        "sortOrderNumber":"7095"
    }
]

size_id_map = {size["sizeOptionId"] : size for size in size_dict}

production_dict = \
[
    {
        "catalogItemId":"7627712",
        "catalogItemTypeId":"3",
        "regularPrice":"0.0",
        "sizeDimension1Id":"1528",
        "sizeDimension2Id":"0",
    }
]

def make_variant(idict):
    odict =  idict.copy()
    size_id = odict.pop("sizeDimension1Id")
    odict.pop("sizeDimension2Id")
    odict["sizeName"] = size_id_map[size_id]["sizeOptionName"]
    odict["sizeId"]   = size_id
    return odict

result_dict = \
{
    "variant" : [make_variant(product) for product in production_dict]
}

print(result_dict)

相关问题 更多 >