Как передать None в dictionary без инициализации

#python #dictionary

#python #словарь

Вопрос:

  • У меня есть родительский словарь my_d
  • Если значение не найдено, мне нужно передать None
  • Мой код работает отлично, ниже приведен код
     event =  {
              "id": "12",
              "name": Abc,
              "redacted": false
            }
    my_d = {'id': None, 'name': None, 'description': None}
    my_d['id'] = event['id']
    my_d['name'] = event['name']
    my_d['description'] = event['description']
  

Есть ли какой-либо способ переписать приведенный выше код

как показано ниже

 my_d['id'] = if event['id'] else None
my_d['name'] = if event['name']  else None
my_d['description'] = if  event['description'] else None
  

В принципе, я не хочу использовать my_d = {'id': None, 'name': None, 'description': None}

Я только что показал один пример словаря, мне нужно зациклить так много событий

Комментарии:

1. dict.fromkeys()

Ответ №1:

 my_d = dict((k, event.get(k)) for k in ["id", "name", "description"])
  

Комментарии:

1. event[k] if k in event else None может быть записан проще как event.get(k)

2. Было бы немного быстрее, если бы вы использовали set вместо list . Также использование понимания dict должно быть быстрее, чем передача generator в dict() .