如何检查a.keys()中是否存在“ 0,1,2”,如果不存在,则添加“ 0,1,2”?

时间:2018-11-19 05:01:03

标签: python python-3.x dictionary

面对这个问题,我遇到了一些麻烦。

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()中的值。

1 个答案:

答案 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}}