我有一个字典,看起来像这样:
{0.234 : 100, 0.345 : 120, 2.45: 200, 2.55 : 250}
对于我的问题,我必须使用密钥的floor()
并取相应值的平均值。
{0 : 110, 2 : 225}
我应该怎么做?我想可能会附加与列表的键值相同的值,然后取所有列表的平均值:
{ 0 : [100, 120], 2 : [200, 250]}
但我无法想象如何做到这一点。
答案 0 :(得分:0)
defaultdict
用于根据公共密钥收集值,公共密钥是原始字典中密钥的最低值。
import math
from collections import defaultdict
original_dict = {0.234 : 100, 0.345 : 120, 2.45: 200, 2.55 : 250}
d = defaultdict(list)
for k,v in original_dict.iteritems(): # or .items() if you are on Python 3.x
d[math.floor(k)].append(v)
for k,v in d.iteritems():
d[k] = sum(v)/len(v)
print(d)
答案 1 :(得分:0)
import math
a = {0.234 : 100, 0.345 : 120, 2.45: 200, 2.55 : 250}
d = {}
for x in a:
if (math.floor(x)) not in d:
d[math.floor(x)] = [a[x]]
else:
d[math.floor(x)] += [a[x]]
d
的输出:
{ 0 : [100, 120], 2 : [200, 250]}
然后:
for x in d:
d[x] = sum(d[x]) // len(d[x])
d
的输出:
{0 : 110, 2 : 225}