我得到了这个数据集,并负责提出一个循环来找到字典中的最高值。我不明白为什么把print函数放在循环内(#1)会产生与放在循环外(#2)不同的答案
data = {'Jeremy':73284, 'Hansel':8784.3, 'Uee':9480938.2,
'Seolhyun':984958.3, 'Ketsuno Ana':24131, 'Trump':45789}
highest_network = data["Jeremy"]
for key,value in data.items():
if value > highest_network:
highest_network = value
print(key,value) #1
print(key,value) #2
对不起,我还是python的初学者,所以我对一些概念还不是很熟悉
在执行过程中的任何给定时间,python都会保留现有变量名及其值的字典。它与作用域的交互方式有点混乱/复杂,但可以说,在这种情况下,
key
和value
在其for
循环之外的作用域中声明现在,注意第一个
print
语句。因为它在循环中,key
和value
会不断更新,所以每次执行时它都会打印当前的key
和value
第二个
print
语句在循环外,在循环运行后执行。请记住,变量key
和value
仍然在范围内,并且仍然保持分配给它们的最后一个值(在这种情况下,key
和value
将是从data.items()
获得的最后一个值)。这就是它们行为不同的原因-因为每次尝试打印它们时,key
和value
的值都不同请记住,就标准而言,
data.items()
放置数据的顺序实际上是任意的。每个键通过for
循环的顺序在您的机器上运行时是一致的,但是如果您在其他机器上放置相同的代码,它的行为可能会有所不同。因此,您不应该依赖于这种行为的一致性第一个
print
语句位于条件分支和for循环内。 因此,每当if
语句给出的条件是True
时,就会执行print
函数。现在,给定您的数据,这只适用于"Uee"
的情况,它的值是最大的,也是第一个大于"Jeremy"
的值。还请注意,items()
返回的顺序不一定每次都相同,因此您也可以得到不同的结果,并且可以多次执行第一个print
现在,第二个
print
在for循环之外,这意味着key
和value
变量保存了最后分配的值。同样,这可以是字典中的任何内容,因为items()
返回的顺序不必相同。如果按照示例中指定的顺序遍历字典,它将打印"trump"
条目相关问题 更多 >
编程相关推荐