Python:开始,停止,步骤

时间:2018-06-09 15:35:27

标签: python python-3.x

我有以下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}

1 个答案:

答案 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}})
]

这需要更多行,您的分析代码需要更改,但定义更容易看到并适合一个合适的行长度,您的分析代码将更容易理解。