我得到了这个数据集,并负责循环查找该词典中的最大值。我对为什么将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的初学者,因此我对某些概念仍然不太熟悉。
答案 0 :(得分:1)
在执行过程中的任何给定时间,python都会保留本质上是存在的变量名及其值的字典。它与作用域进行交互的方式有点令人困惑/复杂,但足以说明在这种情况下,key
和value
在其{{1}之外的作用域中声明}循环。
现在,请注意第一个for
语句。由于它位于循环内,并且print
和key
将不断更新,因此它将在每次执行时打印当前的value
和key
。
第二条value
语句在循环之外,并在循环运行后 执行。请记住,变量print
和key
仍在作用域内,并且仍然保留分配给它们的最后任何内容(在这种情况下,value
并且key
将是您从value
获得的最后一个值)。这就是为什么它们表现不同的原因-因为每次您尝试打印data.items()
和key
时它们的值都是不同的。
请记住,就标准而言,value
放置数据的顺序实际上是任意的。从{<1>}在您的计算机上运行 到每个data.items()
循环中放入每个键的顺序是一致的,但是,如果将相同的代码放在其他人的计算机上,则操作可能会不同。因此,您不应该依赖于这种行为是一致的。
答案 1 :(得分:0)
第一个print
语句位于条件分支和for循环内。
因此,每次if
语句给出的条件为True
时,print
函数都会执行。现在,根据您的数据,这仅适用于"Uee"
的情况,其值具有最大的值,并且也是第一个大于"Jeremy"
的值。另外请注意,items()
返回的顺序不必每次都相同,因此您可以获得不同的结果,并且第一个print
可以执行多次。
现在,第二个print
在for循环之外,这意味着key
和value
变量保留它们被分配的最后一个值。同样,这可能是字典中的任何内容,因为items()
返回的顺序不必相同。如果按照示例中指定的顺序遍历字典,它将打印"trump"
条目。