我有以下代码片段。
我有点困惑,首先,为什么我的步骤参数是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}
最佳答案
首先,您在 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}})
]
这需要更多行,并且您的分析代码需要更改,但定义更容易查看并且适合合适的行长度,并且您的分析代码会更容易理解。
关于Python:开始、停止、单步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775873/