我有两个这样的词典:
my_nested_dictionary= {'key5': 'value5',
'key6': {'inner_key6_1': 'inner_value6_1'},
'key7': 'value7'}
empty_dict = {}
如果我想使用empty_dict
的内部字典更新my_nested_dictionary
,我可以使用此代码执行此操作:
for key, value in my_nested_dictionary.iteritems():
if key=='key6':
empty_dictionary.update(value)
但是,有没有通用的方法可以在不使用“条件”的情况下执行此操作。硬编码只有一个键?如果我在my_nested_dictionary
中有更多嵌套词典作为更多键的值,是否有办法立即更新empty_dictionary
所有键?
答案 0 :(得分:2)
如果要检查嵌套字典;
for key, value in my_nested_dictionary.iteritems():
if isinstance(value, dict):
empty_dictionary.update(value)
答案 1 :(得分:2)
如果您不需要更新现有字典,只想要一个只包含嵌套字典的字典,那么您可以这样做:
only_nested = {k: v for k, v in my_nested_dictionary.items() if isinstance(v, dict)}
例如,给定此代码:
my_nested_dictionary = {'key5': 'value5',
'key6': {'inner_key6_1': 'inner_value6_1'},
'key7': 'value7',
'key8': {'inner_key8_1': 'inner_value8_1'}}
only_nested = {k: v for k, v in my_nested_dictionary.items() if isinstance(v, dict)}
print(only_nested)
我们得到了这个输出:
{'key6': {'inner_key6_1': 'inner_value6_1'}, 'key8': {'inner_key8_1': 'inner_value8_1'}}
答案 2 :(得分:1)
如果您想在不使用if
的情况下在一个语句中获取密钥,则可以像(Python 3)一样进行:
output = list(filter(lambda key: isinstance(my_nested_dictionary[key], dict), my_nested_dictionary.keys()))
输出将类似于['键7']。
从那里,您可以根据需要从原始字典中查找vales。这样您就不必拥有相同对象的多个副本。