我要打印从字典的第25个百分点到第75个百分点的所有值,不带numpy 。
这是我尝试过的代码段。
# 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)
它给出的答案是:-
Students whose marks are between 25th % and 75th % in ascending order of marks are:-
{'student': 7, 'marks': 7}
我想显示一个字典,其中显示学生及其分数在字典中总分的25%到75%之间。
答案 0 :(得分:0)
您可以zip
将学生列表和分数列表一起进行排序,并使用itertools.islice
为第25个百分位数和第75个百分位数之间的条目获取迭代器,并将迭代器传递给{{1 }}构造函数以将学生姓名映射到他们的标记来构建字典:
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))))
答案 1 :(得分:0)
在形成dict
的for循环中,k
是student
,marks
和v
是索引。因此,在dict
键(“学生and
标记) are overridden and the last index value
7`中被保留。因此,您得到的结果是:
{'student': 7, 'marks': 7}
我已将for loop
替换为filter
,然后将DataFrame
转换为dict
:
sor = sor.loc[(sor.index >= per_25) & (sor.index <= per_75)]
new_dict = sor.to_dict('records')
这是修改后的可执行代码:
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}]