python - 使用 jupyter notebook 练习一些数据分析,我的 return 语句改变了我的字典顺序
问题描述
我的代码:
def chickenpox_by_sex():
import numpy as np
import pandas as pd
df = pd.read_csv("NISPUF17.csv")
male_1dose_nopox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 1) &
(df['SEX'] == 1)]
female_1dose_nopox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 1) & (df['SEX'] == 2)]
male_1dose_pox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 2) & (df['SEX'] == 1)]
female_1dose_pox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 2) & (df['SEX'] == 2)]
ratio_male = male_1dose_nopox.shape[0]/male_1dose_pox.shape[0]
ratio_female = female_1dose_nopox.shape[0]/female_1dose_pox.shape[0]
ratio = [ratio_male, ratio_female]
sex = ['male', 'female']
di = {}
di['male'] = ratio[0]
di['female'] = ratio[1]
print(di)
return di
当我调用函数时:
我的打印语句输出以下内容:
{'male': 0.009675583380762664, 'female': 0.0077918259335489565}
我的 return 语句返回以下内容:
{'female': 0.0077918259335489565, 'male': 0.009675583380762664}
我不知道为什么会这样,我也不会那么在意,但在这种情况下,我需要返回声明将男性放在首位。我到处搜索,但找不到答案。请帮帮我!
解决方案
字典在 python 中是无序的。您可以使用来自 3rd 方库 sortedcontainers 的 SortedDict。或者您可以使用元组列表而不是字典。
推荐阅读
- java - Spring jpa 异常 - 找到对集合的共享引用
- google-bigquery - 创建字段失败。请稍后再试:Google 数据洞察
- dialogflow-es - 没有训练短语的帮助,是否有可能触发意图?
- javascript - WKWebview ".html 希望使用您当前的位置" 拦截不起作用
- observable - NGRX:通过select方法订阅Observable返回是同步还是异步?
- json - 如何在 JSON 文件上运行的 GraphQL 上应用过滤器?
- laravel - 批量更新在 pgsql 数据库 laravel 中不起作用
- python - 离线模式linux下pip安装要求
- android - 是否不仅可以在 Firebase Analytics 中查看过去 30 分钟内的事件?
- r - 数据帧的每 n 行和 n 列的总和