gpt4 book ai didi

python - elif 不处理字典键值对

转载 作者:行者123 更新时间:2023-12-02 02:15:02 27 4
gpt4 key购买 nike

我正在编写一个函数来清理字典数据,其中包含一个显示日期和该日期降雨量的键值对。数据清洗的条件是去除满足以下条件的和键值对:

  • 类型不是整数或 float 。即使值是一个可以转换为整数的字符串(例如"5") 应该删除。
  • 值小于0:不可能有负降雨量,所以这一定是错误的数据。
  • 数值大于100:世界纪录一天的降雨量为 71.8 英寸
def clean_data (adic):
newDic = {}
for (date,inches) in adic.items():
print (date,inches)
if not type(inches) == float:
if not type(inches) == int:
print ("type")
continue
elif inches < 0:
print ("below 0")
continue
elif inches > 100:
print ("above 100")
continue
else:
print ("added")
newDic[date]=inches
return newDic



rainfall = {"20190101": 5, "20190102": "6", "20190103": 7.5,
"20190104": 0, "20190105": -7, "20190106": 102,
"20190107": 1}
print(clean_data(rainfall))

出于某种原因,我的代码正在输出:

20190101 5
20190102 6
type
20190103 7.5
added
20190104 0
20190105 -7
20190106 102
20190107 1
{'20190103': 7.5}

很多键值对与 elif 语句的行为并不像我预期的那样。例如,我无法弄清楚为什么 20190101 5 的第一个键值对通过所有 if/elif 语句 put 没有添加到新字典中,或者为什么 20190105 -7 键值对通过 elif 语句值小于 0。当我将所有这些语句更改为 if 语句而不是 elif 语句时,代码可以正常工作,但公平地说,这些语句是互斥的,因此 elif 应该可以工作。我希望代码只运行一个 if 或 elif 语句,如果满足一个条件,我不需要它运行所有这些语句。我不明白 elif 不起作用?

最佳答案

20190101 5 的 5 不是 float ,所以进入第一个分支

    if not type(inches) == float:

既然进入这里,就不会进入任何elif

20190101 5 的 5 是整数,所以这部分执行:

        if not type(inches) == int:
print ("type")
continue

如果你的要求是

the type is not an integer or a float.

(实际上应该是:类型既不是整数也不是 float )

使用if not type(inches) == float and not type(inches) == int:

关于python - elif 不处理字典键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67296820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com