gpt4 book ai didi

python - 在数据类型上使用 "switch"的 python 字典

转载 作者:行者123 更新时间:2023-11-28 20:05:06 25 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个“switch”字典。我希望能够从文本文件中读取数据,并根据它的数据类型做不同的事情。因此,例如,如果我读入一个字符串,我想将它与另一个字符串进行比较。或者,如果我读取一个 float ,我想用它做一些操作。这是机器学习程序的数据清理操作。

我可能可以用 If...Else 语句来做到这一点,但由于我可以想象每种数据类型都有一些东西,所以我宁愿把它做​​得更干净。

我正在使用以下代码:

varX = 2.0
switchDict = {"bool": "boolean", "int": "integer","float": "floatType",
"str": "string"}

switchDict[str(type(varX))]()

def boolean():
print("You have a boolean" )

def integer():
print("You have an integer")

def floatType():
print("You have a float")

def string():
print("You have a string”)

它返回:

Traceback (most recent call last):
File "/Gower71/Switch.py", line 5, in <module>
switchDict[str(type(varX))]()
KeyError: "<class ‘float'>"

如果我将 switchDict 行更改为:

switchDict = {bool: "boolean", int: "integer", float: "floatType", str: "string"}
switchDict[type(varX)]()

它返回:

Traceback (most recent call last):
File "/Gower71/Switch.py", line 5, in <module>
switchDict[type(varX)]()
TypeError: 'str' object is not callable

有没有办法像这样打开类型??

最佳答案

您应该将实际的函数引用存储为值,而不是将它们的名称存储为字符串。示例 -

def boolean():
print("You have a boolean" )

def integer():
print("You have an integer")

def floatType():
print("You have a float")

def string():
print("You have a string")

switchDict = {bool: boolean, int: integer, float: floatType, str: string}
switchDict[type(varX)]()

为此,您需要将字典的构建移到定义所有函数之后。

此外,建议不要使用string 作为函数名,它与string 冲突。这是一个标准模块。最好使用其他名称,例如 string_type 等。

关于python - 在数据类型上使用 "switch"的 python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869273/

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