因此,目前我有一个字典,其中包含设置为{'25308': 'Male','9960': 'Male','85748': 'Female','8523': 'Female'}
的键和值。我的目标是将数值与一致的值进行平均。我希望将其设置为```{'17634':'Male','47135':'Female'}。我还希望使用一个for循环来平均每个键和值。我目前正在使用python 3.7。如果有人可以给我提供见识或为我指出正确的方向,将不胜感激。谢谢
如何对字典中的值求平均值?
•
问答
baizhongzheng 回答:如何对字典中的值求平均值?
嘿,您可以使用列表理解来过滤男性和女性
d = {'25308': 'Male','9960': 'Male','85748': 'Female','8523': 'Female'}
male = [int(n) for n,k in d.items() if k=='Male']
female = [int(n) for n,k in d.items() if k=='Female']
然后您可以计算平均值并将其写入字典
{
str(sum(male)/len(male)): 'Male',str(sum(female)/len(female)): 'Female'
}
输出:
{'17634.0': 'Male','47135.5': 'Female'}
,
我不确定您要的是什么,但我相信您想对所有男性和女性钥匙平均。
我会做这样的事情
Dict = {'25308': 'Male','8523': 'Female'}
maleTotal = 0
femaleTotal = 0
maleCount = 0
femaleCount = 0
for num,gender in Dict.items():
if gender=='Male':
maleCount+=1
maleTotal+=int(num)
else:
femaleCount+=1
femaleTotal+=int(num)
maleAverage = maleTotal / maleCount
femaleAverage = femaleTotal / femaleCount
print('Male Average: '+str(maleAverage)+' Female Average: '+str(femaleAverage))
,
您可以迭代自己的字典来实现它。
dict = {'25308': 'Male','8523': 'Female'}
result = {}
for key in dict.keys():
if dict[key] not in result:
result[dict[key]] = 0
result[dict[key]] += int(key)
output = {}
for key in result.keys():
output[result[key]] = key
,
方法1
d = {
'25308': 'Male','9960' : 'Male','8523' : 'Female'}
def avg_if_match(stryng):
stryng = stryng.lower()
numerator = 0
denominator = 0
for number,gender in d.items():
gender = gender.lower()
if (gender in stryng) or (stryng in gender):
numerator += number
denominator += 1
return numerator/denominator
female_avg = avg_if_match("fem")
方法2
def is_male(s):
return (s[0].lower() == "m")
def is_female(s):
return (s[0].lower() == "f")
male_data = filter(is_male,d)
male_avg = sum(male_data ) /len(male_data)
female_data = filter(is_female,d)
female_avg = sum(female_data ) /len(female_data)