目前我通过这个在线课程学习Python文本情感模块,讲师没有详细解释这段代码是如何工作的。我试着单独搜索每一段代码,试着拼凑他是怎么做的,但这对我没用。
那么这段代码是如何工作的呢?为什么字典括号中有for循环?
最后ActorJob
然后x
之前for y in emotion_dict.values()
背后的逻辑是什么?
括号内for x in y
背后的目的是什么?不会只是emotion_dict=emotion_dict
吗?
emotion_dict
答案 0 :(得分:5)
第emotions = {x for y in emotion_dict.values() for x in y}
行使用集合理解。它构建了一个集合,而不是字典(虽然字典理解也存在,看起来有点类似)。它是
emotions = set() # Empty set
# Loop over all values (not keys) in the pre-existing dictionary emotion_dict
for y in emotion_dict.values():
# The values y are some kind of container.
# Loop over each element in these containers.
for x in y:
# Add x to the set
emotions.add(x)
原始集合理解中x
之后的{
表示要在集合中存储哪个值。总之,emotions
只是字典emotion_dict
中所有容器中所有元素的集合(没有重复)。尝试打印emotion_dict
和emotion
并进行比较。
在函数定义中,
def emotion_analyzer(text, emotion_dict=emotion_dict):
emotion_dict=emotion_dict
表示名称为emotion_dict
的 local 变量设置为类似名为emotion_dict
的全局变量,如果你没有传递任何东西作为第二个参数。这是default argument。