我想编写一个函数,将形如
这是可以的:
'A=5, b=7'
的字符串转换为字典{'A': 5, 'b': 7}
。以下代码片段是主要for
循环中发生的事情 - 它们将字符串的单个部分转换为单个字典元素。这是可以的:
s = 'A=5'
name, value = s.split('=')
d = {name: int(value)}
这不是:
s = 'A=5'
d = {name: int(value) for name, value in s.split('=')}
ValueError: need more than 1 value to unpack
为什么我不能在字典推导式中解包元组?如果我能解决这个问题,那么我就可以将整个函数变成一个紧凑的字典推导式。
eval('dict(%s)'%s,{'__builtins__':None,'dict':dict})
-- 我认为使用这种方法可以防止注入攻击的漏洞(不过如果我有误,我很乐意通过友好的评论听取反馈)。 - mgilson