将字符串作为 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
我从来没有使用过这种命令,所以这个错误让我皱起了眉头。 我正在尝试重构我的代码,而不是像
这样的输出'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