如何在Python中比较两个字典,并相应地替换数值?

2024-05-14 09:59:12 发布

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

这是第一本字典:

[{'ITEMNO': None}, {'ITEM_TYPE': None}, {'CASE_QYT': None}, {'MIN_MINMAX_QUANTITY': None}, {'MAX_MINMAX_QUANTITY': None}, {'ONHAND': None}, {'ONHAND_SUBINV': None}, {'LOCATOR': None}, {'ORGANIZATION_ID': None}, {'INVENTORY_ITEM_ID': None}, {'CREATION_DATA': None}, {'INVENTORY_ITEM_STATUS_CODE': None}]

此字典包含值为None的所有键元素。我有一个第二个字典,它可能包含第一个字典中的所有关键元素,或者少于第一个字典但具有相同的键元素。我想比较这两个字典,如果键相同,用第二个字典的value元素替换None的值。第二本词典如下:

^{pr2}$

结果字典应如下所示:

[{'ITEMNO': None}, {'ITEM_TYPE': 'SPR_ITEM_CPR'}, {'CASE_QTY': None}, {'MIN_MINMAX_QUANTITY': '2'}, {'MAX_MINMAX_QUANTITY': '3'}, {'ONHAND': '162'}, {'ONHAND_SUBINV': 'RSP-SPARES'}, {'LOCATOR': '.RJG005D'}, {'ORGANIZATION_ID': '300000002445681'}, {'INVENTORY_ITEM_ID': '100000001537040'}, {'CREATION_DATE': '01-08-17'}, {'INVENTORY_ITEM_FLAG': 'Y'}, {'INVENTORY_ITEM_STATUS_CODE': 'Active'}]

Tags: noneid元素字典typeminitemmax
3条回答

如果您有两个字典dict1None值)和dict2(有意义的值),您可以updatedict1为:

dict1.update(dict2)

正如其他答案所指出的,请注意你没有dict,你有一个dictlist,你需要先做一个口述,你可以这样做:

^{pr2}$

一旦你有了它:

dict2 = {1 : 'a', 2 : 'bb', 3 : 'c'}
dict1.update(dict2)

print(dict1)

输出:

{1: 'a', 2: 'bb', 3: 'c'}

尝试将二级语言转换为字典,然后形成所需的输出。在

例如:

l1 = [{'ITEMNO': None}, {'ITEM_TYPE': None}, {'CASE_QYT': None}, {'MIN_MINMAX_QUANTITY': None}, {'MAX_MINMAX_QUANTITY': None}, {'ONHAND': None}, {'ONHAND_SUBINV': None}, {'LOCATOR': None}, {'ORGANIZATION_ID': None}, {'INVENTORY_ITEM_ID': None}, {'CREATION_DATA': None}, {'INVENTORY_ITEM_STATUS_CODE': None}]
l2 = [{'ITEM_TYPE': 'SPR_ITEM_CPR'}, {'MIN_MINMAX_QUANTITY': '2'}, {'MAX_MINMAX_QUANTITY': '3'}, {'ONHAND': '162'}, {'ONHAND_SUBINV': 'RSP-SPARES'}, {'LOCATOR': '.RJG005D'}, {'ORGANIZATION_ID': '300000002445681'}, {'INVENTORY_ITEM_ID': '100000001537040'}, {'CREATION_DATE': '01-08-17'}, {'INVENTORY_ITEM_FLAG': 'Y'}, {'INVENTORY_ITEM_STATUS_CODE': 'Active'}]

check_val = dict((i.keys()[0], i.values()[0]) for i in l2)
result = [{i.keys()[0]: check_val.get(i.keys()[0])} for i in l1 ]
print(result)

Python3

^{pr2}$

输出:

[{'ITEMNO': None},
 {'ITEM_TYPE': 'SPR_ITEM_CPR'},
 {'CASE_QYT': None},
 {'MIN_MINMAX_QUANTITY': '2'},
 {'MAX_MINMAX_QUANTITY': '3'},
 {'ONHAND': '162'},
 {'ONHAND_SUBINV': 'RSP-SPARES'},
 {'LOCATOR': '.RJG005D'},
 {'ORGANIZATION_ID': '300000002445681'},
 {'INVENTORY_ITEM_ID': '100000001537040'},
 {'CREATION_DATA': None},
 {'INVENTORY_ITEM_STATUS_CODE': 'Active'}]

如果原始字典为dict1dict2,则可以使用^{}在一行中创建新字典,如下所示:

new_dict = {k: dict2.get(k, v) for k, v in dict1.items()}

或者,因为您知道dict1中的默认值是None,所以您可以使用以下键:

^{pr2}$

或者如果你不在乎变异dict1

dict1.update(dict2)

相关问题 更多 >

    热门问题