我有以下codenippet。
我有点困惑,首先,为什么我有2作为我的步骤参数,是因为我从字典外跳,所以我最终总人口?
第二:i + 1在世界上做什么?从来没有见过它?如果我从i(国名)跳出然后落在总人口上,那将是有意义的。但如果是这样的话,那么将2作为我的步骤有什么意义呢?
代码按照预期运行,我只想知道它是如何工作的,以便以后能够在我自己的项目中受益。
result = {}
print(country_population)
for i in range(0, len(country_population), 2):
result[country_population[i]] = country_population[i+1]['total_population']['population']
print(result)
country_population打印:
['Mali', {'total_population': {'date': '2013-01-01', 'population': 16352320}}, 'Ghana', {'total_population': {'date': '2013-01-01', 'population': 25855970}}
结果打印:
{'Mali': 16352320, 'Ghana': 25855970}
答案 0 :(得分:1)
首先,您在country_population
的定义中缺少右侧括号。如果你添加它,你的代码就会按照你的状态运行。
您的代码中需要步长参数2的原因是country_population
是四个项目的列表。这些项目是
'Mali',
{'total_population': {'date': '2013-01-01', 'population': 16352320}},
'Ghana',
{'total_population': {'date': '2013-01-01', 'population': 25855970}}
所以你看到你有两个国家的信息分布在四个项目上。第一个与马里有关,最后两个与加纳有关。项目1和3是国家名称,项目2和4是人口数据。所以代码使用步长2来从一个国家移动到另一个国家。在每个循环中,项i
是国家/地区名称,项i+1
是人口数据。
如果数据的存储方式不同,您应该创建一个包含两个元组的列表,每个元组包含一个国家/地区名称及其人口数据。然后,数据变量的结构将与数据的含义结构相匹配。换句话说,定义
country_population = [
('Mali', {'total_population': {'date': '2013-01-01', 'population': 16352320}}),
('Ghana', {'total_population': {'date': '2013-01-01', 'population': 25855970}})
]
这需要更多行,您的分析代码需要更改,但定义更容易看到并适合一个合适的行长度,您的分析代码将更容易理解。