我不知道为什么这样

时间:2019-01-29 01:44:23

标签: python python-3.x list dictionary

我正在看一个我不理解的简单代码。我认为这与操作优先级相同,但是我不太清楚。

stack = ["apple", 1]
heap = {}
heap[stack.pop()] = stack.pop()

在JavaScript中,此代码的结果为heap = {1:"apple"}
但是在python中,结果为heap = {"apple" : 1}

我想知道为什么Python有这些结果。

1 个答案:

答案 0 :(得分:-2)

您逐步执行的代码可以帮助您了解发生了什么

In [1]: stack = ["apple", 1]

In [2]: stack
Out[2]: ['apple', 1]

In [3]: pop1 = stack.pop()

In [4]: pop1
Out[4]: 1

In [5]: stack
Out[5]: ['apple']

In [6]: pop2 = stack.pop()

In [7]: pop2
Out[7]: 'apple'

In [8]: stack
Out[8]: []

In [9]: heap = {}

In [10]: heap
Out[10]: {}

In [11]: heap[pop2] = pop1

In [12]: heap
Out[12]: {'apple': 1}

如您所见,pop方法首先删除stack列表的最后一项并返回,然后倒数第二项。