我有一本字典(studentPerf),其中有一所学校的所有学生,以元组为键。我想计算学校中的男生人数和女生人数,并以此来更新第二本词典中的值。第二个字典(dictDemGender)具有2个键,即公和母,值分别为0。如何更改dictDemGender中的0以反映学校中的男性和女性人数?
我可以用字典理解吗?
我已经将头几项提供给StudentPerf:
studentPerf = {('Jeffery','male','junior'):[0.81,0.75,0.74,0.8],
('Able','male','senior'):[0.87,0.79,0.81,0.81],
('Don','male','junior'):[0.82,0.77,0.8,0.8],
('Will','male','senior'):[0.86,0.78,0.77,0.78],
('John','male','junior'):[0.74,0.81,0.87,0.73]}
#Creates a dictionary with genders as keys and 0s as the values to fill later
dictDemGender = {k:0 for k in genders}
dictDemGender = ?
我确实提出了类似的问题,但是诊断错误。我以前曾寻求帮助以求平均分。我真正需要的是数种不同的关键可能性。不幸的是,我需要能够没有任何外部软件包。
答案 0 :(得分:1)
gender = {'male': 0, 'female': 0}
gender.update(Counter(x[1] for x in studentPerf))
# {'male': 5, 'female': 0}
或者,如果您还需要空计数:
dict.fromkeys()
或者将Counter
与d = {'male', 'female'}
gender = dict.fromkeys(d, 0)
gender.update(Counter(x[1] for x in studentPerf))
# {'female': 0, 'male': 5}
结合使用:
root.mainloop()
答案 1 :(得分:0)
假设预期输出为{'male':5, 'female':0}
,请考虑使用Counter
。
>>> from collections import Counter
>>> c = Counter(male=0, female=0)
>>> c.update(gen for _, gen, _ in studentPerf)
>>> c
Counter({'female': 0, 'male': 5})
真的没有必要用零初始化两个键,您也可以编写
>>> c = Counter(gen for _, gen, _ in studentPerf)
>>> c
Counter({'male': 5})
因为缺少键,Counter
查找默认为零:
>>> c['female']
0
答案 2 :(得分:0)
正如我所说,我正在寻找不需要外部包装的解决方案。我知道我解决这个问题的方法相当繁琐,但这是针对一堂课,而且练习有这些要求。我找到了一种计算所有男性和女性人数并将这些值输入dictDemGender词典的方法。
genCounts = ([x[1] for x in list(studentPerf.keys())].count('female'), [x[1] for x in list(studentPerf.keys())].count('male'))
dictDemGender = dict(zip(dictDemGender.keys(), genCounts))