修改字典
我需要修改一个字典。我有一个字典,里面的值是整数,我想把每个值替换成它在所有值中的比例,比如说:
census={a:4, b:1, c:3}; turnIntoFractions(census)
,然后应该打印出 {a:0.5, b:0.125, c:0.375}
。
我在想类似这样的做法:
def turnIntoFractions:
L=d.keys()
total=sum(L)
F=[]
for count in L:
f.append(float(count/float(total))
return F
我有点卡住了,这个方法不太奏效……
6 个回答
0
下面的Python代码会把字典里的键修改成浮点数值。
def turnIntoFractions(mydict):
total = sum(mydict.values())
for key in mydict:
mydict[key] = float(mydict[key]) / total
1
你第一个遇到的问题是,你在计算的是键的总和,而不是值的总和:
total = sum(d.values())
现在,你可以直接在字典里修改,而不是把它放到一个新的列表里:
for key in d.keys():
d[key] /= total # or d[key] = d[key] / total
我之前的代码是遍历每一个键,获取对应的值,然后除以总数,最后再把结果存回到 d[key]
里。
如果你想要返回一个新的字典,而不是只修改现有的字典,你可以先用 e = d.copy()
来复制一份,然后用 e
来进行操作。
3
你可以使用字典推导式。
def turnIntoFractions(d):
total = float(sum(d.values()))
return {key:(value/total) for key,value in d.items()}