Python:开始、停止、单步

标签 python python-3.x

我有以下代码片段。

我有点困惑,首先,为什么我的步骤参数是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/

相关文章:

python - 使用子图绘制 pandas 数据框时出现 IndexError

python - 为什么有了pip还需要Anaconda?

python-3.x - 在上传或保存文件期间输出窗口总是卡住(在 Raspberry Pi 3 上运行的 python 上打开 CV)

python - 允许 64 位或更多位的 numpy.random.binomial 的替代方案?

python-3.x - DF 中每个组的 pyspark corr(超过 5K 列)

python - 是否可以用python解析python并提取可执行表达式?

python - 如何检查 Windows 上所有已安装的 Python 版本?

python - 如何使用类型提示为参数指定多种类型?

python - 在 Quandl 数据上用 Python 实现 ARIMA 时出错

python - 调用 Django i18n makemessages 命令时出现 UnicodeError 错误