Luk*_*lly 13 python computer-science dictionary
我是编程新手,目前参加CSC 110课程.我们的任务是创建一组函数,使用给定的一些数据执行各种操作.我已经把所有数据都放到了字典中,但是我在获取我想要的数据时遇到了一些麻烦.
这是我的问题:
我有一个字典,存储了一堆国家,后面是一个包含人口和GDP的列表.格式化这样的东西
{'country': [population, GDP], ...}
Run Code Online (Sandbox Code Playgroud)
我的任务是遍历这个并找到人口或GDP最高的国家然后打印:
'The country with the highest population is ' + highCountry+\
' with a population of ' + format(highPop, ',.0f')+'.')
Run Code Online (Sandbox Code Playgroud)
为了做到这一点,我写了这个函数(这个函数专门用于最高人口,但它们看起来都是一样的).
def highestPop(worldInfo):
highPop = worldInfo[next(iter(worldInfo))][0] #Grabs first countries Population
highCountry = next(iter(worldInfo))#Grabs first country in worldInfo
for k,v in worldInfo.items():
if v[0] > highPop:
highPop = v[0]
highCountry = k
return highPop,highCountry
Run Code Online (Sandbox Code Playgroud)
虽然这对我有用,但我认为有一种更简单的方法可以做到这一点.另外,我不是100%确定如何[next(iter(worldInfo))]运作.这只是抓住它看到的第一个值吗?
感谢您的帮助!
编辑:对不起我想我不清楚.我需要通过国家人口以及国家名称.所以我可以在我的主要功能中打印它们.
Con*_*ner 18
我想你正在寻找这个:
max(worldInfo.items(), key=lambda x: x[1][0])
Run Code Online (Sandbox Code Playgroud)
这将返回国家/地区名称及其信息.例如:
('france', [100, 22])
Run Code Online (Sandbox Code Playgroud)
max()函数可以在python"iterables"上运行,这对任何可以循环或循环的东西来说都是一个奇特的词.因此,它会循环或循环放入您放入的物品并吐出最高的物品.
但它如何判断哪个元组最高?哪个更高:法国还是德国?您必须指定一个键(一些关于如何判断每个项目的规范).key = lambda等指定一个给定item(x)的函数,根据该项判断该项x[1][0].在这种情况下,如果产品('france', [100, 22])则x[1][0]是100所以x[1][0]每个项目的进行比较,并返回了一个最高的项目.
next()和iter()函数用于python迭代器.例如:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit)) #=> apple
print(next(myit)) #=> banana
print(next(myit)) #=> cherry
Run Code Online (Sandbox Code Playgroud)
使用该max()功能,如下所示:
max(item[0] for item in county_dict.values()) #use item[1] for GDP!
Run Code Online (Sandbox Code Playgroud)
另外,尝试将值存储在list([a, b])中但不存储在元组((a, b))中.
编辑:就像iamanigeeit在评论中所说,这也可以为您提供国家/地区名称:
max(data[0], country for country, data in country_dict.items())
Run Code Online (Sandbox Code Playgroud)
获得具有最高价值的密钥的有效解决方案:您可以这样使用该max功能:
highCountry = max(worldInfo, key=lambda k: worldInfo[k][0])
Run Code Online (Sandbox Code Playgroud)
关键参数是一个函数,它指定要用于确定max.max的值(data [0],country的国家,country_dict.items()中的数据)
显然:
highPop = worldInfo[highCountry][0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1364 次 |
| 最近记录: |