如何对字典中的值求平均值?

因此,目前我有一个字典,其中包含设置为{'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)
本文链接:https://www.f2er.com/3155009.html

大家都在问