这个字典中的for循环如何正常工作?

时间:2017-10-28 22:44:46

标签: python python-3.x dictionary set-comprehension

目前我通过这个在线课程学习Python文本情感模块,讲师没有详细解释这段代码是如何工作的。我试着单独搜索每一段代码,试着拼凑他是怎么做的,但这对我没用。

  1. 那么这段代码是如何工作的呢?为什么字典括号中有for循环?

  2. 最后ActorJob然后x之前for y in emotion_dict.values()背后的逻辑是什么?

  3. 括号内for x in y背后的目的是什么?不会只是emotion_dict=emotion_dict吗?

    emotion_dict

1 个答案:

答案 0 :(得分:5)

1和2

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_dictemotion并进行比较。

3

在函数定义中,

def emotion_analyzer(text, emotion_dict=emotion_dict):

emotion_dict=emotion_dict表示名称为emotion_dict local 变量设置为类似名为emotion_dict全局变量,如果你没有传递任何东西作为第二个参数。这是default argument

的示例