Python 字典对象:语法错误:表达式不能包含赋值,也许您的意思是“==”?

Dee*_*k.K 8 python python-3.x

我正在创建一个字典对象,它是在我使用“语句 1”时创建的,但是在尝试使用与“语句 2”相同的键和值创建字典对象时收到错误消息。

声明一:

dmap = {0: 'Mon', 1: 'Tue', 2: 'Wed', 3: 'Thu', 
        4: 'Fri', 5: 'Sat', 6: 'Sun'}
Run Code Online (Sandbox Code Playgroud)

声明2:

dmap = dict(0='Mon', 1='Tue', 2='Wed', 3='Thu', 
            4='Fri', 5='Sat', 6='Sun'
Run Code Online (Sandbox Code Playgroud)

错误信息:

    File "<stdin>", line 1
    SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我,为什么我可以使用语句 1 创建带有整数键的字典,但不能使用语句 2?

编辑 使用语句 2 的更新版本,我可以使用以下代码创建字典对象:

dmap = dict(day_0='Mon', day_1='Tue', day_2='Wed', 
            day_3='Thu', day_4='Fri', day_5='Sat', day_6='Sun')
Run Code Online (Sandbox Code Playgroud)

Jam*_*iro 9

由于字典中缺少逗号,我遇到了问题:

item = {
    'a': 1,
    'b': 2
    'c': 3,
    'd': 4
}   
Run Code Online (Sandbox Code Playgroud)

请注意 2 和 'c' 之间缺少的逗号


Mis*_*agi 6

dict是一个接受关键字参数的常规可调用对象。根据 Python 语法,关键字参数的形式为identifier '=' expression. 标识符不能以数字开头,数字文字除外。

keyword_item ::= identifier "=" expression

默认情况下,它dict会创建一个接受任意键的字典,不会更改调用的语法。


Bri*_*hon 5

您的困惑可能来自于您可以编写如下内容:

d = dict(spam=1, eggs=2)
Run Code Online (Sandbox Code Playgroud)

这使用了一种称为“关键字参数”的功能,并且仅当键是字符串时才有效。因此,您的示例不起作用,因为键是整数。

  • 请注意,名称比字符串更具限制性。例如,不允许使用 dict(spam Eggs=2) ,但允许使用 {"spam Eggs": 2} 。 (3认同)