我正在尝试运行以下速度的代码
punctDict = {'(':' ( ',')':' ) ','\t':'','\n':''}
for keys,value in map(re.escape, punctDict.keys( )):
print(keys,value)
它工作正常,给我一个预期的输出
但是如果我试着用punctDict = {'(':' ( ',')':' ) ','t':'','n':''}
上面的for循环抛出异常
ValueError: not enough values to unpack (expected 2, got 1)
map() function输出一个迭代器,该迭代器不能解包为键和值元组
对于循环,您可以使用dictionary comprehension映射字典键来转义它
下面是一个示例:
问题是您正在使用
for keys,value
解压一个只有一个字符的字符串。观察这两者之间的输出差异:还有这个:
注意,在第二个示例中,“t”和“n”只是变成了“t”和“n”,不能使用逗号表示法对单个字符串进行解包。因为您只
re.escape()
-ing您的punctDict
的键,所以您不应该期望在for循环中同时获得键和值您在这里运行的
keys,value
实际上并没有访问punctDict
的键和值,而是只转义键并尝试拆分字符串(并且成功,因为字符串只有2个字符)如果你比较一下,你可以看到同样的行为:
有了这个:
即使这样:
相关问题 更多 >
编程相关推荐