Python中添加字典条目时逗号的作用
Posted
技术标签:
【中文标题】Python中添加字典条目时逗号的作用【英文标题】:Role of comma when adding a dictionary entry in Python 【发布时间】:2012-12-27 09:33:17 【问题描述】:我有一个简单的问题。
我有一本字典:table = collections.defaultdict(set)
,以及一个先前定义的由如下规则组成的语法:
Rule(('Noun', ('money',)))
Rule(('Noun', ('book',)))
Rule(('S', ('book',)))
现在,当我输入这个时,什么也没有发生。
for rule in grammar:
if rule.symbols == ("book"):
table[col - 1, col].add(rule.head)
当我输入这个时,条目被添加。
for rule in grammar:
if rule.symbols == ("book",):
table[col - 1, col].add(rule.head)
两者之间的唯一区别是“书”后面的逗号。这个逗号有什么作用,为什么需要它?
谢谢!
【问题讨论】:
那么,rule
是什么,特别是 rule.symbols
?
例如,对于Rule(('Noun', ('money',)))
,rule.symbols 将是('money')
。
【参考方案1】:
在第一种情况下,("book")
括号只是对表达式进行分组的一种方式。该表达式的值就是字符串"book"
。
在第二种情况下,它正在创建一个元组,其中包含一个元素。
【讨论】:
【参考方案2】:你需要添加逗号使它成为一个元组,否则它只是一个字符串。
【讨论】:
那么在字符串后面加逗号会让计算机将其读取为元组? 在任何 表达式 后面添加一个逗号会创建一个包含该表达式值的 1 元素元组。 ;-) @delnan 是的,在这种情况下输入是字符串。 值得强调的是,创建一个元组不需要括号,只有逗号:a = 1,2,3
是完全有效的,b = 1,
也是如此。当然,在模棱两可的情况下(例如将参数传递给函数),括号可能是必要的。【参考方案3】:
一个是字符串,第二个是元组(,):
>>> ("book")
'book'
>>> ("book",)
('book',)
【讨论】:
【参考方案4】:逗号将表达式类型从str
(带有无用括号)转换为带有单个元素的tuple
。
使用type()
来查看实际情况:
>>> type(("book"))
<class 'str'>
>>> type(("book",))
<class 'tuple'>
【讨论】:
以上是关于Python中添加字典条目时逗号的作用的主要内容,如果未能解决你的问题,请参考以下文章