首页 > 解决方案 > 使用 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}

我不知道为什么会这样,我也不会那么在意,但在这种情况下,我需要返回声明将男性放在首位。我到处搜索,但找不到答案。请帮帮我!

标签: pythonpandasdictionaryjupyter-notebookjupyter

解决方案


字典在 python 中是无序的。您可以使用来自 3rd 方库 sortedcontainers 的 SortedDict。或者您可以使用元组列表而不是字典。


推荐阅读