作者Angesi (小云豹)
看板Python
标题[问题] 字典dict() key的条件
时间Thu Nov 1 11:13:25 2018
大家好~
问题:字典 {key:value}
a = {1:'one'} #一般定义 OK
b = dict(one=1, two=2, three=3) #指定变数表达 OK
c = dict(1='one') #用dict() key用数字 结果不行
SyntaxError: keyword can't be an expression
为何用1='one'建立字典不行呢?
PS.原则上,只要能hash的,应该都能当作key的说。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.167.38.188
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1541042008.A.525.html
1F:→ justoncetime: 这个是壹→ 1='one' 是什麽意思可以解释一下吗? 11/01 11:39
2F:→ neil987: 其实是可以 只是你用错方法 11/01 11:52
3F:→ neil987: >>dict([(1, 2), (3, 4)]) 11/01 11:52
4F:→ neil987: >>{1: 2, 3: 4} 11/01 11:52
5F:→ justoncetime: 解法当然有dict([(1,'one')]) 但直接得解,不如 11/01 11:54
6F:→ justoncetime: 从问题中思考、学习收获会更多 11/01 11:55
8F:→ neil987: 所以这说起来其实不是dict的问题XD 11/01 12:09
9F:→ ThxThx: 仔细看错误是SyntaxError(而不是 ValueError) 11/01 12:49
10F:→ shadow0326: 你就想想,为什麽你的b不是dict('one'=1, 'two'=2) 11/01 15:24
11F:推 bugbug777: 我现在好乱 11/01 17:17
12F:→ bugbug777: neil987是正解 justoncetime这个也行喔… 11/01 17:18
13F:→ bugbug777: 啊啊 我没看清楚 sry 11/01 17:23
我猜想 当初dict() 想用「变数=值」来设定字典:
但因为变数命名有很多条件:
比如不能用 1='one' "abc"='c' 以「数字开头」「字串」皆不能当变数名称
这限制了字典key表达
所以後来增加了用iterable的设定
如同neil987用的dict([(1, 2), (3, 4)])
或dict(((1, 2), (3, 4)))亦可
结论:用list或tuple设定字典,避免key的限制。
※ 编辑: Angesi (1.167.38.243), 11/03/2018 10:02:05
14F:→ justoncetime: 跟我在一楼料想的一样,连基本的assign都没弄清楚 11/03 11:19
15F:→ justoncetime: 你观念里有变数,就没有常数吗? 11/03 11:25
16F:→ justoncetime: 再者游戏规则往往有其意义,有无思考过为何不能那样 11/03 11:27
justoncetime
我比较希望你能和大家分享一下:
dict()中用表达式设定字典
意义为何?
(为何要用一个key受限的表达呢?)
※ 编辑: Angesi (1.167.38.48), 11/04/2018 13:58:56
17F:→ justoncetime: 平常就不能用 为何里面就要可以用。你不去找答案而 11/04 16:20
18F:→ justoncetime: 在过程成长,等着伸手为何人家就得上菜? 11/04 16:20
19F:→ justoncetime: 我可以分享的是,往往我都尽量不直接给答案而用引 11/04 16:22
20F:→ justoncetime: 导式提问,因为找答案的过程中会获得更多。 11/04 16:22
21F:→ rofellosx: 这东西没有猜想.. 11/05 09:09
22F:→ rdchen1124: 整篇看完,发现justoncetime大大整个循循善诱,希望楼 11/07 16:11
23F:→ rdchen1124: 主能多思考一下,你的错误讯息应该可以给你答案 11/07 16:12
24F:推 benedict76: 1='one' 这样的程式第一次看到 11/07 22:53