我正在创建一个字典对象,它是在我使用“语句 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)
由于字典中缺少逗号,我遇到了问题:
item = {
'a': 1,
'b': 2
'c': 3,
'd': 4
}
Run Code Online (Sandbox Code Playgroud)
请注意 2 和 'c' 之间缺少的逗号
dict是一个接受关键字参数的常规可调用对象。根据 Python 语法,关键字参数的形式为identifier '=' expression. 标识符不能以数字开头,数字文字除外。
keyword_item ::= identifier "=" expression
默认情况下,它dict会创建一个接受任意键的字典,不会更改调用的语法。
您的困惑可能来自于您可以编写如下内容:
d = dict(spam=1, eggs=2)
Run Code Online (Sandbox Code Playgroud)
这使用了一种称为“关键字参数”的功能,并且仅当键是字符串时才有效。因此,您的示例不起作用,因为键是整数。