Я хочу, чтобы переменная получала имя ключа (только) истинного значения в словаре, если ключ находится в ограниченном списке ключей.
Например, у меня есть словарь Python:
cli = { 'foo':True, 'bar':False, 'auto':True, 'parse':False }
и список:
modes = [ 'auto', 'parse' ]
Точно один из ключей в списке имеет значение True в словаре.Я хочу, чтобы моя переменная получила имя этого ключа.
(Другие ключи также могут быть True, но не в списке - в примере foo
- True.)
В этом примере я хочу переменную mode
, чтобы получитьstring 'auto'
.
Прямо сейчас я делаю это так (без списка):
if cli['1day']: mode = '1day'
elif cli['auto']: mode = 'auto'
elif cli['forceall']: mode = 'forceall'
elif cli['updateonly']: mode = 'updateonly'
elif cli['force']: mode = 'force'
elif cli['reparse']: mode = 'reparse'
elif cli['parse']: mode = 'parse'
elif cli['mirror']: mode = 'mirror'
Есть ли лучший способ (в идеале, используя список и без избыточногоисходный код каждого ключевого имени)?
(FWIW, речь идет о режимах синтаксического анализа с docopt.)