什么是使用任何外部库验证字典中每个值的最佳方法
for example dict = {"A":"some_string",
"B":12,
"C":83,
"D":56.......so on}
我必须验证,如果密钥为A
,则值应为string
和
如果密钥为B
,则值应为int
,范围为1 to 20
如果密钥为C
,则值应为int
,范围为1到100
因此,基于密钥,值的验证也会有所不同......
任何更短的方式吗?我的字典大小很大
答案 0 :(得分:4)
这是另一种词典的方法:
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)
要检查词典是否有效,您可以使用:
print(all(validations.get(k, lambda x: False)(v) for (k, v) in d.items()))
答案 1 :(得分:0)
假设你在字典中定义了预期的类型:
typeExpected = {'A':str, 'B':int}
表示密钥A应包含string
,密钥B应包含int
。让我们将您要测试的字典定义为:
exampleData = {'A':'ok', 'B':0}
现在您可以通过运行来验证类型的正确性:
map(lambda x: type(exampleData[x]) == typeExpected[x], exampleData)
在您的数据上尝试这一点,如果您的字典确实太大,那么将地图转换为pool.map以便在多处理中工作会很容易。