我正在尝试将字典发送到计算平均值的函数中,我相信我的函数不错,但是在发送字典时遇到了麻烦
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,然后输入“结果”
答案 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
。
此外,从不内置阴影。因此,请勿将dict
,sum
等用作变量名。
这将起作用:
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
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)
请勿将关键字用作变量名,例如dict
或sum
。您可以发送整个词典,然后遍历所有项目:
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。