面对这个问题,我遇到了一些麻烦。
a = {
None: {0: None, 1: None},
'1,2': {0: '0,1,2', 1: None}
}
我想验证a的字典值是否存在于a.keys()
中,如果不存在,则将其添加为具有dict()
值的键。
在这种情况下,None
中存在a.keys()
个值,但是'0,1,2'
不存在,因此我只将其添加到a.keys()
中,并且会有类似的内容。
a = {
None: {0: None, 1: None},
'1,2': {0: '0,1,2', 1: None},
'0,1,2': {}
}
进行一些其他操作后,空字典将具有一些键和值。
例如,
a = {
None: {0: None, 1: None},
'1,2': {0: '0,1,2', 1: None},
'0,1,2': {0: None, 1: '0,1'}
}
现在'0,1'
中不存在a.keys()
,因此我将其添加。
因此,我需要一遍又一遍地验证作为字典的a.values()
在a.keys()
中的值。
答案 0 :(得分:0)
您可以通过检查“值字典”中的所有值是否不存在于原始字典中的键来遍历,从而创建所有缺失值的列表
def add_keys(d):
missing_values = [v for vdict in d.values() for v in vdict.values() if v not in d]
for k in missing_values:
d[k] = {}
请注意,生成missing_values
所花费的时间与d
的所有“值字典”中出现的值总数成比例:
因此,现在,如果您随时在add_keys
上调用a
,它应该使用缺少的密钥更新a
:
a = {None: {0: None, 1: None},
'1,2': {0: '0,1,2', 1: None}}
add_keys(a)
print(a)
# {'1,2': {0: '0,1,2', 1: None}, '0,1,2': {}, None: {0: None, 1: None}}
a = {None: {0: None, 1: None},
'1,2': {0: '0,1,2', 1: None},
'0,1,2': {0: None, 1: '0,1'}}
add_keys(a)
print(a)
# {'1,2': {0: '0,1,2', 1: None}, '0,1': {}, '0,1,2': {0: None, 1: '0,1'}, None: {0: None, 1: None}}