Python elif不处理字典键值对
我正在编写一个函数来清理字典中的数据,其中包含一个键值对,显示日期和该日期的降雨量。清除数据的条件要求删除和键值对,其中值满足以下条件:Python elif不处理字典键值对,python,if-statement,Python,If Statement,我正在编写一个函数来清理字典中的数据,其中包含一个键值对,显示日期和该日期的降雨量。清除数据的条件要求删除和键值对,其中值满足以下条件: 类型不是整数或浮点。即使价值 是可以转换为整数的字符串(例如。 “5”)应将其删除 该值小于0:不可能有 负降雨量,所以这一定是坏数据 该值大于100:这是 一天的降雨量为71.8英寸 如此多的键值对并不像我预期的那个样使用elif语句。例如,我无法理解为什么20190101 5的第一个键值对通过所有if/elif语句,而put没有添加到新字典中,或者为什
- 类型不是整数或浮点。即使价值 是可以转换为整数的字符串(例如。 “5”)应将其删除
- 该值小于0:不可能有 负降雨量,所以这一定是坏数据
- 该值大于100:这是 一天的降雨量为71.8英寸
如此多的键值对并不像我预期的那个样使用elif语句。例如,我无法理解为什么20190101 5的第一个键值对通过所有if/elif语句,而put没有添加到新字典中,或者为什么20190105-7键值对通过值小于0的elif语句。当我将所有这些语句更改为if语句而不是elif语句时,代码可以正常工作,但我可以确定这些语句是互斥的,因此elif应该可以正常工作。我希望代码只运行一个if或elif语句,如果满足一个条件,我不需要它来运行所有这些语句。我不明白elifs不起作用?20190101 5的5不是浮点,所以它进入第一个分支
if not type(inches) == float:
由于在此处输入,因此不会输入任何elif
s
20190101 5
中的5是整数,因此此部分不执行:
如果你的要求是
类型不是整数或浮点
(实际上应该是:类型既不是整数也不是浮点)
如果不是类型(英寸)=浮动,则使用,而不是类型(英寸)=int:
rainfall = {"20190101": 5, "20190102": "6", "20190103": 7.5,
"20190104": 0, "20190105": -7, "20190106": 102,
"20190107": 1}
5,0,-7,102,1
是int
的类型。首先,if-not-type(inches)==float的if语句将处理它,因为它们是int,所以它们不会转到if语句if-not-type(inches)==int:
“6”
是字符串,既不是float也不是int。因此它将打印类型消息
唯一可以正确处理的元素是
7.5
改进:如果不存在(英寸,(整数,浮动)):继续
ahhh我明白了!非常感谢你!啊,好吧,这很有道理,非常感谢:)!
if not type(inches) == float:
if not type(inches) == int:
print ("type")
continue
rainfall = {"20190101": 5, "20190102": "6", "20190103": 7.5,
"20190104": 0, "20190105": -7, "20190106": 102,
"20190107": 1}