Эффективный выбор наилучшей строки из ключей в dict

#python

#python

Вопрос:

Я пытаюсь прочитать данные EXIF из файла, в частности заголовок изображения. Иногда требуется проверить несколько полей, чтобы увидеть, был ли установлен заголовок. Прямо сейчас я делаю это с помощью нескольких операторов if, пробуя по одному, пока результат не станет none, и если это так, применяя заголовок по умолчанию.

 #Set the title
  m.title = exif.get('Xmp.dc.subject')
  if m.title is None:
    m.title = exif.get('Xmp.dc.title')
  if m.title is None:
    m.title = original_filename_noextension
  

Мой вопрос в том, есть ли более простой способ сделать это? Поиск может занять довольно много времени, если нужно проверить много ключей.

Ответ №1:

 m.title = exif.get('Xmp.dc.subject') or exif.get('Xmp.dc.title') or original_filename_noextension
  

Должно сработать. Обратите внимание, что это приведет к «объединению» любых ложных значений, а не только None .

Кроме того, вы можете довольно легко написать функцию:

 def coalesce(*args):
   for a in args:
      if a is not None:
          return a
  

Использование:

 m.title = coalesce(exif.get('Xmp.dc.subject'), exif.get('Xmp.dc.title'), original_filename_noextension)