如何打印字典的百分之二十五到百分之七十五的数值?

2024-06-28 19:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打印字典第25个百分位到第75个百分位的所有值,而不打印numy。在

这是我试过的代码片段。在

# No Numpy allowed
import pandas as pd
def display_dashboard():
    df=pd.DataFrame({'student':student_list,'marks':marks_list})
    sorte=df.sort_values('marks',ascending=False)
    per_25=round(0.25*len(marks_list))
    per_75=round(0.75*len(marks_list))
    sor=df.sort_values('marks')
    new_dict = {k:v for k, v in sor.items() for v in range(per_25,per_75)}
    print("Students whose marks are between 25th % and 75th % are:-")
    print(new_dict)

它给出的答案是:

^{pr2}$

我想要一本字典,显示学生和他们的分数在字典总分的25%到75%之间。在


Tags: dfnewforlen字典sortstudentdict
2条回答

您可以zip一起对学生列表和标记列表进行排序,并使用itertools.islice为第25和第75个百分位之间的条目获取迭代器,并将迭代器传递给dict构造函数,以生成一个dict,其中学生名映射到他们的标记:

from itertools import islice
from operator import itemgetter
student_list = ['Amy', 'Ben', 'Carl', 'Dan', 'Ean', 'Fab', 'Gal', 'Han']
marks_list = [29, 70, 55, 81, 13, 42, 84, 37]
total = len(marks_list)
print(dict(islice(sorted(zip(student_list, marks_list), key=itemgetter(1, 0), reverse=True), round(0.25 * total), round(0.75 * total))))

该输出:

^{pr2}$

在for循环中,当您形成dictkstudentmarks和{}是索引。因此,在dict键中('studentand标记{}7`被保留。因此,您得到的结果是:

{'student': 7, 'marks': 7}

我将for loop替换为filter,然后将DataFrame转换为{}:

^{pr2}$

以下是修改后的可执行代码:

import pandas as pd

student_list=['a', 'b','c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
marks_list=[18, 45, 50, 100, 34, 45, 87, 50, 90, 26]

df=pd.DataFrame({'student':student_list,'marks':marks_list})
sorte=df.sort_values('marks',ascending=False)
per_25=round(0.25*len(marks_list))
per_75=round(0.75*len(marks_list))
sor=df.sort_values('marks')
sor = sor.loc[(sor.index >= per_25) & (sor.index <= per_75)]
new_dict = sor.to_dict('records')
print("Students whose marks are between 25th % and 75th % are:-")
print(new_dict)

它产生输出:

Students whose marks are between 25th % and 75th % are:-
[{'student': 'e', 'marks': 34}, {'student': 'f', 'marks': 45}, {'student': 'c', 'marks': 50}, {'student': 'h', 'marks': 50}, 
{'student': 'g', 'marks': 87}, {'student': 'i', 'marks': 90}, {'student': 'd', 'marks': 100}]

相关问题 更多 >