如何将 python 字典值用作整数、浮点数或布尔值?
How to use python dictionary values as integers, floats or booleans?
我正在尝试将 python 中的字典值读取为整数、浮点数或布尔值,而不是字符串。我有一个包含以下内容的文本文件:
类别:1
食物:1.5
足够了:正确
到目前为止我可以读取文本文件并创建字典如下:
dict = {
"Cat": "1",
"Food": "1.5",
"Enough": "True"
}
但是我想做的是将键读取为整数浮点数和布尔值。
我在想类似的东西:
if dict.key == "Cat":
dict.value is integer
if dict.key == "Food":
dict.value is float
if dict.key == "Enough":
dict.value is boolean
但是我不知道怎么写这样的东西。我真的很感激任何人的帮助或想法。
Ps。另一个想法是让它从我的文本文件中读取为字符串,然后将其转换。但我仍然找不到合适的解决方案或任何与我正在寻找的类似的示例。
您可以使用元字典,其中键是字典的键,值是要转换成的类型,如果找不到键则默认转换为字符串:
meta_dict = { "Cat": int, "Food": float, "Enough": bool }
my_dict = { "Cat": "1", "Food": "1.5", "Enough": "True", "misc":"other" } # adding a string key for the demo
new_dict = { k:meta_dict.get(k,str)(v) for k,v in my_dict.items()}
print(new_dict)
打印:
{'Cat': 1, 'Food': 1.5, 'Enough': True, 'misc': 'other'}
如果您没有任何字符串键,只有整数、浮点数和布尔值,您可以使用 ast.literal_eval
来猜测类型并转换为它:
import ast
my_dict = { "Cat": "1", "Food": "1.5", "Enough": "True" }
new_dict = { k:ast.literal_eval(v) for k,v in my_dict.items()}
将来,将您的文件保存并重新加载为 json
,以便保留类型。
我正在尝试将 python 中的字典值读取为整数、浮点数或布尔值,而不是字符串。我有一个包含以下内容的文本文件:
类别:1 食物:1.5 足够了:正确
到目前为止我可以读取文本文件并创建字典如下:
dict = {
"Cat": "1",
"Food": "1.5",
"Enough": "True"
}
但是我想做的是将键读取为整数浮点数和布尔值。 我在想类似的东西:
if dict.key == "Cat":
dict.value is integer
if dict.key == "Food":
dict.value is float
if dict.key == "Enough":
dict.value is boolean
但是我不知道怎么写这样的东西。我真的很感激任何人的帮助或想法。
Ps。另一个想法是让它从我的文本文件中读取为字符串,然后将其转换。但我仍然找不到合适的解决方案或任何与我正在寻找的类似的示例。
您可以使用元字典,其中键是字典的键,值是要转换成的类型,如果找不到键则默认转换为字符串:
meta_dict = { "Cat": int, "Food": float, "Enough": bool }
my_dict = { "Cat": "1", "Food": "1.5", "Enough": "True", "misc":"other" } # adding a string key for the demo
new_dict = { k:meta_dict.get(k,str)(v) for k,v in my_dict.items()}
print(new_dict)
打印:
{'Cat': 1, 'Food': 1.5, 'Enough': True, 'misc': 'other'}
如果您没有任何字符串键,只有整数、浮点数和布尔值,您可以使用 ast.literal_eval
来猜测类型并转换为它:
import ast
my_dict = { "Cat": "1", "Food": "1.5", "Enough": "True" }
new_dict = { k:ast.literal_eval(v) for k,v in my_dict.items()}
将来,将您的文件保存并重新加载为 json
,以便保留类型。