使用纯 python 在 python 中的两个嵌套数据结构之间执行比较和赋值

Perform a compare and assign values between two nested-data structures in python using pure python

我目前有两个数据集(database,assignment),分别是嵌套的list-dict和dict-list。我想在数据库中使用一种特定键的 vlookup 函数,如果 key:value 匹配赋值中的键,我想在原始数据库中创建一个新的键值对(有点赋值根据他们的工作范围,有人要做的任务)。 我想完全使用 python 来完成这个而不导入任何库(没有 pandas/numpy 等)

为了解释得更清楚,这是我的代码和我试图实现的目标:

database = \[{‘name’ : ’ABC’, ‘position’ : ‘executive’}, {‘name’ : ’DEF’, ‘position’ : ‘senior exec’}, {‘name’ : ’GEH’, ‘position’ : ‘contractor’}\]

assignment =  { 'executive': \[‘task1', ‘task2’\], 
    ‘senior exec’: \[‘task3', ‘task4’\] , 
    'contractor': \[‘task5'\]}

我认为代码应该遵循类似于 vlookup 的 if-else 逻辑,就像这样 --

if database\[‘position’\] == assignment\[‘executive’\] 
    create new key – ‘jobscope’ and assign task1, task2 as a list etc.

我期望的输出是这样的:

database = \[{‘name’ : ’ABC’, ‘position’ : ‘executive’, ‘jobscope’ : \[‘task1', ‘task2’\]}, {‘name’ : ’DEF’, ‘position’ : ‘senior exec’, ‘jobscope’ : \[‘task3', ‘task4’\]}, {‘name’ : ’GEH’, ‘position’ : ‘contractor’, ‘jobscope’ : \[‘task5'\]}\]

我不确定如何实现这种循环和产生输出,而且我有一定的灵活性来更改 assignment 的数据结构,所以我征求你的意见,如果一个 dict-列表也是实现此输出的最佳方式吗?

此脚本应该有效:

database = [
    {'name': 'ABC', 'position': 'executive'},
    {'name': 'DEF', 'position': 'senior exe'},
    {'name': 'GEH', 'position': 'contractor'},
]

assignment = {
    'executive': ['task1', 'task2'],
    'senior exec': ['task3', 'task4'],
    'contractor': ['task5'],
}

for dictionary in database:
    if dictionary['position'] in assignment.keys():
        dictionary['jobscope'] = assignment[dictionary['position']]

print(database)