python如何通过匹配parent_id合并两个列表

bqf10yzr  于 2023-01-22  发布在  Python
关注(0)|答案(2)|浏览(147)

variation_product具有属性parent_product_id,我想通过匹配parent_product_id属性将parent_product和variation_product合并到一个列表中。如何操作?
下面是我数据:

{
      "parent_product": [
        {
          "parent_product_id": "sku01"
          "product_title": "product1",
          
      ],
      "variation_product": [
        {
        "variation_product_id": "001",  
        "parent_product_id": "sku01" 
        "user_id": "1"
          
        }
      ],
      "parent_product": [
        {
          "parent_product_id": "sku02"
          "product_title": "product2",
          
      ],
      "variation_product": [
        "variation_product_id": "002",  
        "parent_product_id": "sku02"
        "user_id": "2"
      ]
}

我的预期结果是:

{
   "parent_product": [
    "parent_product_id": "sku01"
    "product_title": "product_1",
    "variation_product_id": "001",
    "user_id": "1"
      ],
    "parent_product": [
    "parent_product_id": "sku02"
    "product_title": "product2",
    "variation_product_id": "002",
     "user_id": "2"

      ],
}
ffscu2ro

ffscu2ro1#

使用itertools中的产品

import itertools

combined_data = {} 
combined_data["parent_product"] = [
    {**pp, **vp}
    for pp, vp in itertools.product(data["parent_product"], data["variation_product"])
    if pp["parent_product_id"] == vp["parent_product_id"]
    ]
    
print(combined_data)

**注意:**您期望的输出甚至没有正确构造。您应该只有一个parent_product作为包含不同属性的字典列表,如下面的输出:

{
    'parent_product': [
        {
            'parent_product_id': 'sku01', 
            'product_title': 'product1', 
            'variation_product_id': '001', 
            'user_id': '1'
            
        }, 
        {
            'parent_product_id': 'sku02', 
            'product_title': 'product2', 
            'variation_product_id': '002', 
            'user_id': '2'
            
        }
    ]
    
}
bpsygsoo

bpsygsoo2#

result = {}
for parent in data["parent_product"]:
    parent_id = parent["parent_product_id"]
    parent_title = parent["product_title"]
    variations = [v for v in data["variation_product"] 
if v["parent_product_id"] == parent_id]
    result[parent_id] = {"product_title": parent_title, "variations": 
variations}

这段代码将遍历parent_product数据,对于每个父产品,它将通过匹配parent_product_id属性找到相应的variation_product,然后创建一个新字典,将parent_product_id作为键,product_title和variations作为值。

相关问题