gpt4 book ai didi

python - 如何从文本文件中读取字典?

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:43 24 4
gpt4 key购买 nike

我有一个以下格式的文本文件

d = {'EMS':1,'ESC': 2, 'HVAC': 3,'IC' : 4,'ICU' : 5,'IS' : 6,'ITM' : 7,'MBFM' : 8,'PKE' : 9,'RPAS' : 10,'RVC' : 11,'SAS' : 12,'SRS' : 13,'TCU' : 14,'TPMS' : 15,'VCU' : 16,'BMS' : 17,'MCU' :18,'OBC' :19}

我如何阅读字典以找到特定值的值?

我试过下面的代码

with open(r"filename","r") as f:
data = ast.literal_eval(f.read())
print(data)
for age in data.values():
if age == search_age:
name = data[age]
print (name)

最佳答案

您的文本文件是有效的 Python 代码,因此如果它来自可信来源,您只需执行以下操作:

with open("filename") as f:
exec(f.read())

变量 d 将与字典一起加载。

如果文本文件不是来自受信任的来源,但是,您可以使用ast.parse 来解析代码,然后使用ast.walk 来遍历摘要语法树并查找 Dict 节点。出于安全原因,确保 dict 节点不包含任何 Call 节点,然后将其包装为 Expression 节点的主体并为 eval 编译它> 将其转换为存储在变量 d 中的真实字典:

import ast
with open("filename") as f:
for node in ast.walk(ast.parse(f.read())):
if isinstance(node, ast.Dict) and \
not any(isinstance(child, ast.Call) for child in ast.walk(node)):
d = eval(compile(ast.Expression(body=node), '', 'eval'))
break
else:
print('No valid dict found.')

给定您的示例输入,d 将变为:

{'EMS': 1, 'ESC': 2, 'HVAC': 3, 'IC': 4, 'ICU': 5, 'IS': 6, 'ITM': 7, 'MBFM': 8, 'PKE': 9, 'RPAS': 10, 'RVC': 11, 'SAS': 12, 'SRS': 13, 'TCU': 14, 'TPMS': 15, 'VCU': 16, 'BMS': 17, 'MCU': 18, 'OBC': 19}

关于python - 如何从文本文件中读取字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822803/

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