【问题标题】:How to dynamically and conditionally assign dictionary values?如何动态和有条件地分配字典值?
【发布时间】:2019-12-09 03:47:47
【问题描述】:

我正在尝试将值分配给字典,但我不知道这些值是什么,或者即使它们提前存在。我用 None 值初始化我的字典,或者我将其分配为输入字典中的值。问题是输入字典可能没有某些键的值,或者甚至可能一开始就没有键。

除了检查每个键是否存在然后分配它是否存在之外,有没有一种方法可以将字典键值设置为默认值 None 并且如果有键:输入字典中的值来将输出字典中的键分配给该值?

作为示例,我将一些值分配给输入字典中的值,而另一些则分配给 None。

我想做的是{'<node>': if exists(node['id']: node['id] else: None}

但这显然行不通。

def nvalues(node):

nrowtemp = {'<node>': node['id'], '<namespace>': node['namespace'], '<title>': node['<title>'], '<category>': None, '<submittable>': None, '<description>': None, '<link_name>': None, '<additionalProperties>' : None, '<contraints>': None, '<program>': None, '<project>': None, '<backref>': None, '<label>': None, '<target>': None, '<multiplicity>': None, '<link_required>': None, '<link_group_required>': None, '<group_exclusive>': None}`

【问题讨论】:

标签: python dictionary dynamic


【解决方案1】:

见下文

nodes = [{'id':12,'namespace':'ns1'},{'id':17},{'not_id':12,'namespace':'ns2'}]
keys = ['id','namespace']
new_nodes = []
for node in nodes:
  new_nodes.append({k:node.get(k) for k in keys})
print(new_nodes)

输出

[{'id': 12, 'namespace': 'ns1'}, {'id': 17, 'namespace': None}, {'id': None, 'namespace': 'ns2'}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多