2016-09-28 3 views
1

Предположим, у меня есть словарь config который, среди прочего, имеет ключи username и password. Я хотел бы создать новый словарь, состоящий только из пар ключ-значение username и password от config. Один из способов сделать это:DRY выбор подмножества словаря

new_dictionary = {'username': config['username'], 'password': config['password']} 

Это кажется немного многословный мне, так как он содержит повторы слов username и password. Есть ли более сжатый способ сделать это?

+0

'dict (((k, config [k]) для k in ('username', 'password')))' – dawg

ответ

3

Вы можете просто создать tuple или list, который хранит имена полей, которые вы хотите скопировать и перебирать каждый элемент

new_dictionary = {k: config[k] for k in ('username', 'password')} 
0

Вы можете хранить пару имя пользователя/пароль в словаре югу (так называемый мандат)

config = { 'param1': 'value1', 'credential': { 'username': 'myname', 'password': 'pa22w0rd' } } 
new-dictionary = config['credential'] 

Вы можете создать класс учетных данных и передать этот объект вместо словаря.

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