Python Лучший способ построить словарь из входов

Я пытаюсь построить вложенный словарь из пользовательских входов. Единственная проблема заключается в том, что пользователь может отказаться от ввода некоторых из этих входов. В этих случаях я хочу, чтобы словарь полностью исключал это поле. Например:

ids = 1234 dmas = 5678 

Я бы хотел, чтобы словарь выглядел так:

 d = {profile:{"dma_targets":dmas, "id":ids}} 

Однако, если пользователь решает не включать определенный ввод:

 ids = None dmas = 5678 

Я бы хотел, чтобы словарь выглядел так:

 d = {profile:{"dma_targets":dmas}} 

Я немного застрял здесь, и это кажется очень простой вещью, так как это было бы легко сделать, если бы мне нужен список вместо dict. Одна из проблем, с которыми я сталкиваюсь, – это:

 x = "dma_targets":dmas 

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

Как насчет маленького понимания ?

 fkeys = ['dma_targets', 'ids'] fvals = [5678, None] d = {'profile': {k:v for (k,v) in zip(fkeys, fvals) if v is not None}} 

что дает d как

 {'profile': {'dma_targets': 5678}} 
 d = {profile:{}} if ids: d['profile']['ids'] = ids if dmas: d['profile']['dma_targets'] = dmas 

Если я правильно понимаю, вам нужен вложенный словарь с разными типами (python позволяет это сделать).

 from collections import defaultdict d = defaultdict(lambda: defaultdict(list)) d['a']['b'].append('bla') d[15] = 15