Python 字典对象:SyntaxError:表达式不能包含赋值,也许你的意思是“==”?

问题描述 投票:0回答:8

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

陈述1:

dmap = {0: 'Mon', 1: 'Tue', 2: 'Wed', 3: 'Thu', 
        4: 'Fri', 5: 'Sat', 6: 'Sun'}

陈述2:

dmap = dict(0='Mon', 1='Tue', 2='Wed', 3='Thu', 
            4='Fri', 5='Sat', 6='Sun'

错误信息:

    File "<stdin>", line 1
    SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

有人能告诉我,为什么我可以使用语句 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')
python python-3.x
8个回答
7
投票

我遇到这个问题是因为我的字典里少了一个逗号:

item = {
    'a': 1,
    'b': 2
    'c': 3,
    'd': 4
}   

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


4
投票

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

keyword_item         ::=  identifier "=" expression

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


3
投票

你的困惑可能来自于你可以这样写:

d = dict(spam=1, eggs=2)

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


2
投票

因为在语句 2 中你使用了“=”而不是“:”。你必须使用“:”。

正确的方法:

dict_obj = {'a': 1, "b": 2, "c": 3}

错误的方式:

dict_obj = {'a' = 1, "b" = 2, "c" = 3}

这就是字典的工作原理。


0
投票

虽然

0:'Mon'
描述了一个键值对并被这样评估,但 0='Mon' 的评估就像您在常规代码中编写 0 = 'Mon' 一样,这将尝试将 'Mon' 分配给一个数字,不是变量,就像写 'Potato' = 'Mon' - 有点荒谬。


0
投票

你可以在 dict 函数中使用整数作为键,但不是那样你可以这样做:

dmap = dict([(0 ,'Mon') ,(1, 'Tue'), (2, 'Wed'), (3, 'Thu'),(4, 'Fri'),(5 , 'Sat'), (6, 'Sun')])


-1
投票

Python 中的字典必须包含一个

key-value
对。 喜欢

dmap = {0:'周一',1:'周二',2:'周三',3:'周四',4:'周五',5:'周六',6:'周日'}

这里的键是

0, 1, 2, 3, 4, 5, 6
,它们各自的值是
'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'
.
注意:键或值可以是任何类型。

但是在声明 2 中:

dmap = dict(0 = 'Mon', 1 = 'Tue', 2 = 'Wed', 3 = 'Thu', 4 = 'Fri', 5 = 'Sat', 6 = 'Sun')
您正在分配值。这在 python 中是不允许的。

相反,你可以这样写。

dmap = dict({0 : 'Mon', 1 : 'Tue', 2 : 'Wed', 3 : 'Thu', 4 : 'Fri', 5 : 'Sat', 6 : 'Sun'})

-1
投票

检查命名参数 https://treyhunner.com/2018/04/keyword-arguments-in-python/

更简单的思考方式

0 = "星期一"

x= 0

是 x = 0 还是 x = “Mon”?

© www.soinside.com 2019 - 2024. All rights reserved.