Python:验证字典中的每个值

Fry*_*Man 0 python validation dictionary

在不使用任何外部库的情况下验证字典中每个值的最佳方法是什么

for example dict = {"A":"some_string",
                    "B":12,
                    "C":83,
                    "D":56.......so on}
Run Code Online (Sandbox Code Playgroud)

我必须验证,如果键是A那么值应该是string,如果键是B那么值应该是int并且范围从1 to 20 如果键是C那么值应该是int并且范围从 1 到 100 所以基于键,值的验证也有所不同......

任何更短的方法来做到这一点?我的字典很大

Bah*_*rom 7

这是使用另一本字典的方法:

d = {"A":"some_string",
     "B":12,
     "C":83,
     "D":56}

# Map your validation functions to the keys
validations = {
    "A": lambda x: isinstance(x, str),
    "B": lambda x: isinstance(x, int) and 1 <= x <= 20,
    "C": lambda x: isinstance(x, int) and 1 <= x <= 100,
}

for k, v in d.items():
    print(validations.get(k, lambda x: False)(v))  # Default validation just returns False (invalid)
Run Code Online (Sandbox Code Playgroud)

要检查字典是否有效,您可以使用:

print(all(validations.get(k, lambda x: False)(v) for (k, v) in d.items()))
Run Code Online (Sandbox Code Playgroud)