用嵌套值替换字典中的值

2024-10-02 02:32:11 发布

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

我有两个字典,它们的键和嵌套列表与值相同:

dict_1 =   {'PickMeterEquipment': [['value', 'PB:PRICELIST', 'list', 'LeaseAccountingContracts'],['value', 'PICK_SKU10', 'propval', '._sku']],'GenericPickRule': [['propval', '_amEntitled', 'literal', '0'], ['propval', '_sku', 'value', 'PICK_SKU1'], ['propval', '_sku', 'value', 'PICK_SKU2']]}
dict_2 =  {'PickMeterEquipment': [['ITEM', 'ABC'],['ITEM', 'XYZ'],['CLASS', 'PQR']],'GenericPickRule': [['ITEM', 'ZHC2'], ['ITEM', 'ZHC3'], ['ITEM', 'ZHC4']]}

现在我想根据以下条件替换dict_1中的值:

if '._sku' in dic1_1 : replace with corresponding dict_2 item

以及

if '_sku' in dic1_1 : replace with corresponding dict_2 item

例如,我需要最终输出如下:

OUTPUT: {PickMeterEquipment: [ everything same],['value', 'PICK_SKU10', 'propval', 'ABC'],[.....,PICK_SKU10', 'propval', 'XYZ']...]..}

我可以迭代这两个dict,但不能替换值,因为可能有多个值要替换,我需要为该特定值创建一个新的副本

#loop to iterate over two dicts
for k, k2 in zip(prop_val_item_map,item_rule_attach_map):
    print(prop_val_item_map[k],item_rule_attach_map[k2])

Tags: inmapifvalueitemdictabcxyz
1条回答
网友
1楼 · 发布于 2024-10-02 02:32:11

试试这个:

dict_1 =   {'PickMeterEquipment': [['value', 'PB:PRICELIST', 'list', 'LeaseAccountingContracts'],['value', 'PICK_SKU10', 'propval', '._sku']],'GenericPickRule': [['propval', '_amEntitled', 'literal', '0'], ['propval', '_sku', 'value', 'PICK_SKU1'], ['propval', '_sku', 'value', 'PICK_SKU2']]}
dict_2 =  {'PickMeterEquipment': [['ITEM', 'ABC'],['ITEM', 'XYZ'],['CLASS', 'PQR']],'GenericPickRule': [['ITEM', 'ZHC2'], ['ITEM', 'ZHC3'], ['ITEM', 'ZHC4']]}
for i in dict_1:
    for value_1, value_2 in zip(dict_1[i], dict_2[i]):
        if "._sku" in value_1:
            value_1.remove("._sku")
            value_1.append(value_2[-1])
        if "_sku" in value_1:
            value_1.remove("_sku")
            value_1.append(value_2[-1])

print(dict_1)

输出:

{'PickMeterEquipment': [['value',
   'PB:PRICELIST',
   'list',
   'LeaseAccountingContracts'],
  ['value', 'PICK_SKU10', 'propval', 'XYZ']],
 'GenericPickRule': [['propval', '_amEntitled', 'literal', '0'],
  ['propval', 'value', 'PICK_SKU1', 'ZHC3'],
  ['propval', 'value', 'PICK_SKU2', 'ZHC4']]}

相关问题 更多 >

    热门问题