使用纯 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)
我目前有两个数据集(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)