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中添加字典条目时逗号的作用的主要内容,如果未能解决你的问题,请参考以下文章

添加到 NSDictionary 条目到 NSMutableDictionary

python字典自动添加尾随逗号

python:使用回车和逗号打印不起作用

python中三引号的作用(逗号的两点总结)

创建新的 tableView 条目时,约束不起作用

python中的列表中常用的方法都有哪些,分别是啥作用?