我有一个简单的问题。
我有一个字典: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)
两者之间的唯一区别是“书”背后的逗号。这个逗号做了什么,为什么有必要?
谢谢!
答案 0 :(得分:4)
你需要添加逗号才能使它成为一个元组,否则它只是一个字符串。
答案 1 :(得分:4)
一个是字符串,第二个是元组(,):
>>> ("book")
'book'
>>> ("book",)
('book',)
答案 2 :(得分:4)
在第一种情况下,("book")
parens只是对表达式进行分组的一种方式。该表达式的值只是字符串"book"
。
在第二种情况下,它创建了一个元组,其中包含一个元素。
答案 3 :(得分:0)
逗号将表达式类型从str
(带有无用括号)转换为tuple
单个元素。
使用type()
查看此操作:
>>> type(("book"))
<class 'str'>
>>> type(("book",))
<class 'tuple'>