从 Python 中的字典中获取平均值
Get averages from a dictionary in Python
从 python 词典中获取平均值,例如,如果我有下一个词典:
students={'Dan':(5,8,8), 'Tim':(7), 'Richard':(9,9)}
我想以下一种形式打印词典:
results={'Dan':(7), 'Tim':(7), 'Richard':(9)}
有什么功能可以使用吗?我是 python 中的新编码,所以字典对我来说有点混乱。
如果您希望 avg 值是一个元组元素(我看不出有任何理由这样做,但也许我没有足够的上下文),请尝试:
results={k: (sum(v)/len(v),) for k,v in students.items()}
Pythonic 解决方案是使用字典理解来创建结果字典。
def avg(l):
return sum([l]) / len(l)
results = {key: (avg(val)) for (key, val) in students.items()}
您需要将 sum 中的 l 括起来,以便将元组视为列表。我会进一步将数据结构更改为列表而不是元组。
我正在尝试这个,但意识到我们在对长度为 1 的元组求和时遇到了问题。所以你可以这样做。
results = {}
for k, v in students.items():
print(v)
if (isinstance(v, int)):
results[k] = v
else:
results[k] = sum(v) / len(v)
我愿意:
result = {}
for k, v in students.items():
if type(v) in [float, int]:
result[k] = v
else:
result[k] = sum(v) / len(v)
从 python 词典中获取平均值,例如,如果我有下一个词典:
students={'Dan':(5,8,8), 'Tim':(7), 'Richard':(9,9)}
我想以下一种形式打印词典:
results={'Dan':(7), 'Tim':(7), 'Richard':(9)}
有什么功能可以使用吗?我是 python 中的新编码,所以字典对我来说有点混乱。
如果您希望 avg 值是一个元组元素(我看不出有任何理由这样做,但也许我没有足够的上下文),请尝试:
results={k: (sum(v)/len(v),) for k,v in students.items()}
Pythonic 解决方案是使用字典理解来创建结果字典。
def avg(l):
return sum([l]) / len(l)
results = {key: (avg(val)) for (key, val) in students.items()}
您需要将 sum 中的 l 括起来,以便将元组视为列表。我会进一步将数据结构更改为列表而不是元组。
我正在尝试这个,但意识到我们在对长度为 1 的元组求和时遇到了问题。所以你可以这样做。
results = {}
for k, v in students.items():
print(v)
if (isinstance(v, int)):
results[k] = v
else:
results[k] = sum(v) / len(v)
我愿意:
result = {}
for k, v in students.items():
if type(v) in [float, int]:
result[k] = v
else:
result[k] = sum(v) / len(v)