阿你爸爸 发表于 2021-1-26 23:01:35

难道这是python的bug?

今天学习了字典的方法。

里面有一个update()方法。是更新字典的意思。

我找了个例子,尝试了一下:

>>> dict2
{'李宁': '一切皆有可能', '耐克': 'Just Fuck It', '阿迪达斯': 'Impossible is nothing', '鱼C工作室': '让编程改变世界', '妇炎洁': '洗洗更健康'}
>>> dict2.update(阿迪达斯='Impossible is everything')
>>> dict2
{'李宁': '一切皆有可能', '耐克': 'Just Fuck It', '阿迪达斯': 'Impossible is everything', '鱼C工作室': '让编程改变世界', '妇炎洁': '洗洗更健康'}

完美!

我又找了个例子试了一下:

>>> c
{1: 'A', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: None, 7: 'g'}
>>> c.update(6='f')
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

创建字典的时候,允许key为数字,你.update()作为字典的一个内建方法,你不允许key为数字?你算老几?

谁能告诉我这是为什么?以及,上面的例子,我如何把6这个key的value更新为f

jackz007 发表于 2021-1-26 23:19:19

本帖最后由 jackz007 于 2021-1-26 23:21 编辑

c = {1: 'A', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: None, 7: 'g'}
c='f'
      字典的键名通常应该是字符串。

曼查克 发表于 2021-1-27 08:55:18

本帖最后由 曼查克 于 2021-1-27 09:07 编辑

这样是可以的:
>>> c.update({6 :'e'})

参数需要时字典类型

至于你第一次能成功,我特地翻看了一下原视频,
猜测’阿迪达斯‘会被解释成字符串,而阿迪达斯既不是字符串,也不是整型、布尔。。所以就被解释成键值。
而第二次报错也许是键值被直接解释成整型了吧。



hrp 发表于 2021-1-27 10:46:49

不是BUG。
把update参数单独拿出来,阿迪达斯='Impossible is everything'是符合变量命名规则的,可以单独运行,而
6='f'不行,因为这不符合变量命名规则(变量名不能以数字开头,不能是纯数字等), c.update(6='f')报错是因为里面不符合变量命名规则。

天下有雪 发表于 2021-1-27 11:26:22

学习了。
页: [1]
查看完整版本: 难道这是python的bug?