Python从输入构造字典的最佳方法

Dav*_*ang 2 python dictionary

我正在尝试从用户输入构造嵌套字典.唯一的问题是,用户可以选择不输入其中一些输入.在这些情况下,我希望字典完全排除该字段.例如:

ids = 1234
dmas = 5678
Run Code Online (Sandbox Code Playgroud)

我希望字典看起来像这样:

d = {profile:{"dma_targets":dmas, "id":ids}}
Run Code Online (Sandbox Code Playgroud)

但是,如果用户决定不包含某些输入:

ids = None
dmas = 5678
Run Code Online (Sandbox Code Playgroud)

我希望字典看起来像这样:

d = {profile:{"dma_targets":dmas}}
Run Code Online (Sandbox Code Playgroud)

我有点卡在这里,这似乎是一件非常简单的事情,因为如果我想要一个列表而不是一个字典,这将很容易.我遇到的一个问题是:

x = "dma_targets":dmas 
Run Code Online (Sandbox Code Playgroud)

不是一个有效的对象,所以我很难构建它的各个部分,然后将它们添加到字典中.非常感谢!

ojd*_*jdo 6

一个小小的词典理解怎么样?

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

产量d

{'profile': {'dma_targets': 5678}}
Run Code Online (Sandbox Code Playgroud)

  • 如果0是有效值,您将要将`if v`更改为`if v is not None`. (3认同)