2016-04-05 5 views
0

Я получаю ответ от API, и иногда он имеет необязательный ключ с именем 'Selections'. Когда он не имеет ключ, я хотел бы иметь 'Selections': [] в MarketPrices, как показано ниже:Установить значения по умолчанию с помощью setdefault в определенном списке

{'MarketPrices': [{'Selections': [], '_Id': 7308747L, '_ReturnCode': 16}, 
        {'_Id': 1L, '_ReturnCode': 16}], 
'ReturnStatus': {'_CallId': 7bc619bd-2805-4205-85ff-6fa5b48ea899, 
        '_Code': 0, 
        '_Description': Success}, 
'Timestamp': datetime.datetime(2016, 4, 3, 21, 14, 19, 726967, tzinfo=<suds.sax.date.FixedOffsetTimezone object at 0x7f805fffed50>)} 

Я пытаюсь установить ключи по умолчанию с dict.setdefault('Selections', []), но я получаю:

{'MarketPrices': [{'Selections': [], '_Id': 7308747L, '_ReturnCode': 16}, 
        {'_Id': 1L, '_ReturnCode': 16}], 
'ReturnStatus': {'_CallId': 7bc619bd-2805-4205-85ff-6fa5b48ea899, 
        '_Code': 0, 
        '_Description': Success}, 
'Selections': [], 
'Timestamp': datetime.datetime(2016, 4, 3, 21, 14, 19, 726967, tzinfo=<suds.sax.date.FixedOffsetTimezone object at 0x7f805fffed50>)} 

Как я могу определить, что значение по умолчанию должно быть в 'MarketPrices'?

+0

я удалил '«Selections'' ключи от второго словаря в '» MarketPrices'' список и '' ReturnStatus''; они явно не были добавлены вашей попыткой кода. –

ответ

2

Вопрос заключается в том, что вы обновляете значение по умолчанию «Подборки» в родительском Словаре,

но вам необходимо обновить значение во внутреннем словаре объекта.

# assuming that the super_dict object will always have "MarketPrices" 
for sub_dict in super_dict['MarketPrices']: 
    sub_dict.setdefault('Selections':[]) 

совет: старайтесь не использовать имя переменной dict, так как она будет перекрывать встроенного конструктора типа dict

Смежные вопросы