猿问

值中不带引号的字典的字符串表示

我正在尝试创建一个可以评估为字典的字符串,例如:

'{"key1": val1, "key2": val2}'

我第一次尝试:

str({key: "val%d" % i for i, key in enumerate(args)})

这主要是有效的,除了而不是val1我得到'val1'。我也许可以用 for 循环做一些事情,但感觉很尴尬。有更好的方法吗?

不幸的是我不能只是腌制字典,它需要是一个有效的 Python 字典。


PIPIONE
浏览 99回答 3
3回答

明月笑刀无情

不漂亮,但完成你正在寻找的东西:args = ["key1", "key2"]your_attempt = str({key: "val%d" % i for i, key in enumerate(args)})# outputs: "{'key2': 'val1', 'key1': 'val0'}"your_attempt.replace("': '","': ").replace("', '",", '").replace("'}","}")# outputs: "{'key2': val1, 'key1': val0}"

暮色呼如

为了标准化,我建议使用内置的 json 库来编码和解码您的信息字符串。>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])'["foo", {"bar": ["baz", null, 1.0, 2]}]'>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')['foo', {'bar': ['baz', None, 1.0, 2]}]该json模块可以很好地处理请求、泡菜等,并可以通过为您实施格式化协议来帮助您避免头痛和错误。

呼如林

eval()如果这是你想要的,你可以使用:val1 = "one"val2 = "two"test = '{"key1": val1, "key2": val2}'test_dict = eval(test)print(test_dict)# {'key1': 'one', 'key2': 'two'}
随时随地看视频慕课网APP

相关分类

Python
我要回答