佩恩是神 发表于 2017-4-18 15:52:08

字典更新语法错误,求助

>>> g={"米奇":"老鼠","汤姆":"猫"}
>>> g.update(汤姆="老虎")
>>> g
{'汤姆': '老虎', '米奇': '老鼠'}


这个更新没问题;但下面这个字典更新就一直提示语法错误,求解答。

>>>f
{3: 'three', 4: 'four', 5: 'five'}
>>> f.update(3='ten')
SyntaxError: keyword can't be an expression

零度非安全 发表于 2017-4-18 17:26:42

本帖最后由 零度非安全 于 2017-4-18 17:32 编辑

SyntaxError: keyword can't be an expression ---> 语法错误,keyword 不能是一个表达式,查 Python 文档,如下



我在这里作下翻译:从 这个参数更新字典的键值对,并重写已存在键值,没有返回值,update() 方法接受另一

个字典对象或者是一个可迭代的键值对(元组或其它可迭代对象的长度),如果 keyword 参数被指定给出,那么字典

就会根据给定的键值来更新当前字典,比如 d.update(red=1, blue=2)

"汤姆"这个键是个字符串,Python 中的字符串是一个可迭代对象,而 3 只是一个数字,数字具有不可变性,不是一个

可迭代对象,所以会报错。

若你想更新这个字典,可以这么写:
f.update({3:'ten'})
f = 'ten'
所以我想一直对你们学 Python 的人来说,其实你们问的好多问题都可以通过查阅文档来解决,是英文看不懂吗?我想

应该不是,包括我自己学习都是看文档解决,比如我现在在学 Java,好多都是看 JDK 英文文档,自己翻译!

零度非安全 发表于 2017-4-18 18:21:51

我上面说错了,报错的原因不是因为由于可迭代对象报错,而是 3 = 'ten' 这个东西出错

后来想了下,这表达式根本就不符合常理, 怎么能把一个值赋值给一个数字呢?更正下我上面

说的!!!

佩恩是神 发表于 2017-4-19 17:04:31

零度非安全 发表于 2017-4-18 18:21
我上面说错了,报错的原因不是因为由于可迭代对象报错,而是 3 = 'ten' 这个东西出错

后来想了下,这表 ...

非常感谢,恍然大悟,明白了。
页: [1]
查看完整版本: 字典更新语法错误,求助