在for循环中返回.get()方法的值 - 需要改变我的想法吗?

时间:2017-01-25 17:11:56

标签: python python-2.7 get return

我正在Udacity上学习算法课程。我在课堂上遇到了一个难以解决问题的问题。相反,我进入讨论论坛寻找其他答案以寻求帮助。然而,在阅读代码时,我无法弄清楚它是如何工作的。任何帮助都非常感激

我想要了解的是这段代码:

graph = [(0, 1), (1, 5)]
def get_degree(graph):
    degree = {}
    for x, y in graph:
        degree[x] = degree.get(x, 0) + 1
        degree[y] = degree.get(y, 0) + 1
    return degree

我查看了Python文档并观看了几个YouTube视频,以了解字典,元组和get方法。这就是我被困住的地方:

def get_degree(graph):
    degree = {}
    for x, y in graph:
        print degree
        degree[x] = degree.get(x, 0) + 1
        print x, y
        print degree.get(x, 0) + 1
        print degree[x]
        print degree

        degree[y] = degree.get(y, 0) + 1
        print degree
    return ""

graph = [(0, 1), (1, 5)]

get_degree(graph)

当我调用此功能时,我的输出如下:

{}
0 1
2
1
{0: 1}
{0: 1, 1: 1}
{0: 1, 1: 1}
1 5
3
2
{0: 1, 1: 2}
{0: 1, 1: 2, 5: 1}

现在他是理解这一点的过程:

  1. 打印出一个空字典的程度,以便{}
  2. 打印出x,y这是第一个元组,所以我得到0 1
  3. 这里需要帮助* 3.这个语句打印出来让我感到困惑,因为当调用degree.get(x,0)+ 1时,我希望得到的值为1.我称之为度数的方式。 get(x,0)它应该看到第一个元组(0,1)中的第一个x是0,然后返回0并向它添加1给我一个值。

    此处需要帮助* 4.现在我打印度[x]这应该是与上面相同的值,因为“度[x] =度.get(x,0)+ 1”但是此打印语句的输出是1

    此处需要帮助* 5.现在我要求它打印到目前为止的词典,我希望它是{度[x]},因为此时我只提供它,但是我的输出是{0,1 }

    如果有人可以帮我正确思考,我想我可以自己解决这个问题。

0 个答案:

没有答案