Python:验证字典中的每个值
在不使用任何外部库的情况下,验证字典中每个值的最佳方法是什么Python:验证字典中的每个值,python,validation,dictionary,Python,Validation,Dictionary,在不使用任何外部库的情况下,验证字典中每个值的最佳方法是什么 for example dict = {"A":"some_string", "B":12, "C":83, "D":56.......so on} 我必须验证,如果键是A,那么值应该是string,并且 如果键为B,则值应为int,范围为1到20 如果键为C,则值应为int,范围为1到100 因此,根据键,值的验
for example dict = {"A":"some_string",
"B":12,
"C":83,
"D":56.......so on}
我必须验证,如果键是A
,那么值应该是string
,并且
如果键为B
,则值应为int
,范围为1到20
如果键为C
,则值应为int
,范围为1到100
因此,根据键,值的验证也会有所不同
有没有更短的方法?我的字典非常大假设您在字典中定义了预期的类型:
typeExpected = {'A':str, 'B':int}
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)
这意味着键A应该包含字符串
,键B应该包含int
。让我们将要测试的字典定义为:
exampleData = {'A':'ok', 'B':0}
现在,您可以通过运行以下命令来验证类型的正确性:
map(lambda x: type(exampleData[x]) == typeExpected[x], exampleData)
在您的数据上尝试此操作,如果您的字典确实太大,则很容易将map转换为pool.map以在多处理中工作。以下是另一个字典的方法:
typeExpected = {'A':str, 'B':int}
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)
有多少把钥匙?在相应的价值要求之间有什么模式吗?这些规则是从哪里产生的?如果没有这一点,这就不是一个很好定义的问题。创建另一个字典,其中键映射到验证函数,并使用类似于
validations[key](value)