gpt4 book ai didi

python - 如何将带有不带引号的键的字符串转换为 Python 中的字典

转载 作者:行者123 更新时间:2023-12-04 18:03:20 29 4
gpt4 key购买 nike

我有一个字符串

"{a:'b', c:'d',e:''}"

请注意字典条目的键没有被引用,所以一个简单的 eval("{a:'b', c:'d',e:''}")正如 previous question 中所建议的不起作用。

将此字符串转换为字典最方便的方法是什么?
{'a':'b', 'c':'d', 'e':''}

最佳答案

如果这是来自 可信来源 (不要将其用于一般用户输入,如 eval is not secure ;但话说回来,如果您从潜在恶意用户那里获得输入,则应使用 JSON 格式和 json module 代替),您可以使用 eval用一个技巧。

source = """{e: '', a: 'b', c: 'd'}"""

class identdict(dict):
def __missing__(self, key):
return key

d = eval(source, identdict())
print(d)

打印
{'a': 'b', 'c': 'd', 'e': ''}

这是如何工作的,我们创建了一个新的字典子类 identdict定义魔术方法 __missing__ .调用此方法来查找字典中缺少的键。在这种情况下,我们只返回键,因此字典将键映射到自己。然后是 sourceeval使用 identdict实例为 globals争论。 eval将从 globals 中查找变量的值映射;因为它是 identdict ,访问的每个变量的值现在方便地是变量的名称。

适用于更复杂的字符串作为值,以及任何正确的 Python 文字语法。

关于python - 如何将带有不带引号的键的字符串转换为 Python 中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935918/

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