【发布时间】:2021-02-26 09:46:47
【问题描述】:
我正在尝试编写代码来查找我的 dict 中键的平均值,但基于 dict 值。因此,例如,对于:
d = {1:2, 2:1, 3:2}
字典键是:
[1,1,2,3,3]
我编写了以下代码,适用于上述小型数据集:
def get_median_of_dict_keys(d: dict) -> float:
nums_list = []
for k,v in d.items():
if type(v) != int:
raise TypeError
nums_list.extend([k] * v)
median = sum(nums_list) / len(nums_list)
return median
当数据集很小时,这会得到我想要的值,但如果数据集是这样的:
d = {1:1_000_000_000_000_000, 2:2_000, 3:1_000_000_000_000_000}
我得到一个内存不足的错误,现在我想起来了,这是有道理的。
那么我怎样才能以一种同时处理那些更大的数据集的方式来构造上述函数呢?感谢您的宝贵时间。
【问题讨论】:
-
我认为你的代码计算了平均值
-
d = {1:2, 2:1, 3:2}的键是1,2,3而不是1,1,2,3,3 -
你能详细说明
{1:2, 2:1, 3:2}应该是[1,1,2,3,3]吗? -
丹妮,对不起,我就是这个意思。
-
铁钥匙,没错。同样,代码适用于小数字,但一旦它们变大,我就会耗尽内存。
标签: python dictionary key mean weighted-average