2014-05-23 3 views
2

Я хочу добавить 'status' в значение dict, проиндексированное 'update_fields', или добавить ['status'] в качестве значения для kwargs, проиндексированного 'update_fields', если этого ключа нет.Есть ли более элегантный способ написать это в Python?

kwargs.setdefault('update_fields', kwargs.get('update_fields', []).append('status')) 

Это либо это, либо примерно 3 строки кода, безусловно, python может сделать это лучше!

ответ

6

get и setdefault - это по существу два метода выполнения одной и той же вещи; их объединение повторяется. Единственная разница между get и setdefault заключается в том, что setdefaultустанавливает значение, если значение по умолчанию не существует. После этого они идентичны семантически.

Так эта часть:

kwargs.get('update_fields', []) 

..is избыточными. setdefault устанавливает значение по умолчанию (и возвращает его, например get), если словарь еще не имеет значения для этого ключа, иначе он просто ищет значение, связанное с ключом.

Так все, что вам нужно:

kwargs.setdefault('update_fields', []).append('status') 
+0

Yea, Я знал, что должен делать что-то неправильно. благодаря – boatcoder

5

Вам не нужно kwargs.get() бит, setdefault только устанавливает значение, если она еще не существует, вы можете просто написать:

kwargs.setdefault('update_fields', []).append('status') 
Смежные вопросы