У меня есть следующий код, который работает, но выглядит так, будто он очень вложенный. Я уверен, что есть лучший способ написать это, но я также новичок в использовании Python map
/ filter
на lambda
. Как лучше написать это, чтобы объединить 2 словаря и выбрать только интересующий нас ключ.
import copy
default_params_list = [
{
"abc": "some junk that we do not care",
"time_unit": "week",
"city": "atlanta"
}
]
foobar_list = [
{
"type": "predict",
"junk": "something we do not care",
"start_date": "2018-09-15",
"length": "all"
}
]
params_list = []
for foobar in foobar_list:
for default_params in default_params_list:
parameters = copy.deepcopy(default_params)
parameters.update({
'length': foobar['length']
})
if(foobar.get('type', none) == 'predict'):
if(foobar.get('start_date', none)):
parameters.update({
'start_date': foobar['start_date']
})
if(foobar.get('type', none) == 'training'):
if(foobar.get('end_date', none)):
parameters.update({
'end_date': foobar['end_date']
})
params_list.append({
'parameters': parameters
})
print(params_list)
Выход:
[
{'parameters':
{'abc': 'some junk that we do not care',
'time_unit': 'week',
'city': 'atlanta',
'length': 'all',
'start_date': '2018-09-15'}
}
]