2016-09-27 62 views
0

我试图找到在字典totals最大的价值和相应的键,当我像这样的代码,我可以得到正确的答案:变量XXXX是不确定的

highest_value = 0 
highest_key = None 
for a_country in totals.keys(): 
    if totals[a_country] > highest_value: 
     highest_value = totals[a_country] 
     highest_key = a_country 

而我使用另一种方式,错误“变量highest_key未定义。”。

highest_value = 0 
highest_key = None 
for a_country in totals.keys(): 
     highest_value = totals[a_country] if totals[a_country] > highest_value else highest_value 
     highest_key = a_country if totals[a_country] > highest_value else highest_key 

我很困惑。我认为这两个代码是相同的....

+0

你能给'totals'的例子吗? –

回答

1

考虑将此作为总额:

totals={'20':'10','40':'20','60':'30','80':'40','100':'50','120':'60'}

说明:

为您的第一个程序我得到的结果像,

Value 60 Key 120

第二个代码的问题是在循环中,在第一个程序中,您正在获取最高值并为其分配相应的键。但在第二个你给

highest_key = a_country if totals[a_country] > highest_value else highest_key

即这里最高值现在是“60”。所以不会比60更大的价值,所以进入其他,并给出默认none作为结果,

如果你改变它为==那么你会得到相应的关键。

这里是,

totals={'20':'10','40':'20','60':'30','80':'40','100':'50','120':'60'} 
highest_value = 0 
highest_key = None 
for a_country in totals.keys(): 
    print a_country 
     highest_value = totals[a_country] if totals[a_country] > highest_value else highest_value 
     highest_key = a_country if totals[a_country] == highest_value else highest_key 
print "Value",highest_value 
print "Key",highest_key 

结果是,

Value 60 Key 120

+0

明白了,谢谢! –