字典迭代

2024-05-14 06:56:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了这个数据集,并负责提出一个循环来找到字典中的最高值。我不明白为什么把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的初学者,所以我对一些概念还不是很熟悉


Tags: 数据key函数答案data字典valuenetwork
2条回答

在执行过程中的任何给定时间,python都会保留现有变量名及其值的字典。它与作用域的交互方式有点混乱/复杂,但可以说,在这种情况下,keyvalue在其for循环之外的作用域中声明

现在,注意第一个print语句。因为它在循环中,keyvalue会不断更新,所以每次执行时它都会打印当前的keyvalue

第二个print语句在循环外,在循环运行后执行。请记住,变量keyvalue仍然在范围内,并且仍然保持分配给它们的最后一个值(在这种情况下,keyvalue将是从data.items()获得的最后一个值)。这就是它们行为不同的原因-因为每次尝试打印它们时,keyvalue的值都不同

请记住,就标准而言,data.items()放置数据的顺序实际上是任意的。每个键通过for循环的顺序在您的机器上运行时是一致的,但是如果您在其他机器上放置相同的代码,它的行为可能会有所不同。因此,您不应该依赖于这种行为的一致性

第一个print语句位于条件分支和for循环内。 因此,每当if语句给出的条件是True时,就会执行print函数。现在,给定您的数据,这只适用于"Uee"的情况,它的值是最大的,也是第一个大于"Jeremy"的值。还请注意,items()返回的顺序不一定每次都相同,因此您也可以得到不同的结果,并且可以多次执行第一个print

现在,第二个print在for循环之外,这意味着keyvalue变量保存了最后分配的值。同样,这可以是字典中的任何内容,因为items()返回的顺序不必相同。如果按照示例中指定的顺序遍历字典,它将打印"trump"条目

相关问题 更多 >

    热门问题