检查字典项平均值的函数

时间:2018-12-25 12:26:30

标签: python

我正在尝试将字典发送到计算平均值的函数中,我相信我的函数不错,但是在发送字典时遇到了麻烦

my_dict = {"first": 100, "second": 0, "third": 200}

def avg(dict):

    sum=0
    count=0
    for k,v in dict:
        sum = sum+v
        count +=1
    return(sum/count)


result = avg(**my_dict)

print(result)

输出应为100,然后输入“结果”

6 个答案:

答案 0 :(得分:2)

my_dict = {"first": 100, "second": 0, "third": 200}
def dictavg(your_dict):
    return sum(your_dict.values())/len(your_dict)
print(dictavg(my_dict))

答案 1 :(得分:0)

直接传递字典,而不通过**字典拆包运算符。而是在函数内进行解压缩:迭代dict.items可以得到键值对,但是在这里您可以使用dict.values

此外,从不内置阴影。因此,请勿将dictsum等用作变量名。

这将起作用:

def avg(d):

    val_sum = 0
    count = 0
    for v in d.values():
        val_sum += v
        count += 1
    return(val_sum/count)

result = avg(my_dict)  # 100.0

您还可以使用内置的sumlen

result = sum(my_dict.values()) / len(my_dict.values())

或使用statistics.mean

from statistics import mean

result = mean(my_dict.values())  # 100

答案 2 :(得分:0)

删除星号并在字典上使用.items()

my_dict = {"first": 100, "second": 0, "third": 200}

def avg(dict):

    sum=0
    count=0
    for k,v in dict.items():
        sum = sum+v
        count +=1
    return(sum/count)


result = avg(my_dict)

print(result)

答案 3 :(得分:0)

只需尝试:

my_dict = {'first': 100, 'second': 0, 'third': 200}
avg = sum(my_dict.values()) / len(my_dict)

答案 4 :(得分:0)

您不能在字典中使用以下语句:

for k, v in dict:

相反,有一种方法可以分别使用keys()或values()方法接收键列表或字典值。这些方法返回字典键或字典值的列表,然后可以对其进行迭代。还有一种方法可以返回键和值的元组列表-items()。

因此,任何一种都应该为您工作:

my_dict = {"first": 100, "second": 0, "third": 200}

def avg(dicti):

    total_sum=0
    count=0
    for key in dicti.keys():
        sum += dicti[key]
        count +=1
    return(sum/count)

result = avg(my_dict)

print(result)

或:

my_dict = {"first": 100, "second": 0, "third": 200}

def avg(dicti):

    total_sum=0
    count=0
    for value in dicti.values():
        sum += value
        count +=1
    return(sum/count)

result = avg(my_dict)

print(result)

答案 5 :(得分:-1)

请勿将关键字用作变量名,例如dictsum。您可以发送整个词典,然后遍历所有项目:

my_dict = {"first": 100, "second": 0, "third": 200}

def avg(a_dict):
    total=0
    count=0
    for k,v in a_dict.items():
        total = total+v
        count +=1
    return(total/count)


result = avg(my_dict)

print(result)

请注意,平均值为100。