将字符串作为 dict 并通过 eval 对其进行格式化(不可订阅)

having a string as dict and formatting it through eval (not subscriptable)

我从来没有使用过这种命令,所以这个错误让我皱起了眉头。 我正在尝试重构我的代码,而不是像

这样的输出
'temp': 22,56, 'temp_max': 25.6, 'temp_min': 19.0, 'temp_kf': None

它只显示 22,56。 我找到了一个代码,告诉我们 dict:

s = "'temp': 18.72, 'temp_max': 20.0, 'temp_min': 17.0, 'temp_kf': None"
data = eval('{{{}}}'.format(s))
temperature1 = str(data['temp'])
print(temperature1)

输出像 18,72

所以我试图将我的变量 t 作为一个字符串(如果打印它给出与 s 内部的字典相同的输出,只有当前温度数字)在 s 内部。 :

s = str(t))
data = eval('{{{}}}'.format(s))
temperature1 = str(data['temp'])
print(temperature1)

这告诉我 s 是不可散列的,所以我在 s = hash(str(t))

中修改了它

现在我得到了错误

TypeError: 'set' object is not subscriptable

为什么这么难?

我认为这里的问题是你如何设置你的字典,你实际上只创建了一个类似于字典的string,看看这个然后再回头看看其他一些参考资料字典的正确结构

解决方案

dicta = {
    'temp': '22, 56', 'temp_max': 25.6, 'temp_min': 19.0, 'temp_kf': None
}

print(dicta['temp'])

输出

(xenial)vash@localhost:~/python$ python3.7 split.py 
22, 56

你可以像这样用一些标签来美化它

print(f"Temp: {dicta['temp']}")

这会打印:

(xenial)vash@localhost:~/python$ python3.7 split.py 
Temp: 22, 56