我需要修改字典。我有一个包含整数值的字典,并希望用所有值的总和除去每个值,例如:
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
我有点陷入困境,而且无法正常工作......
答案 0 :(得分:3)
您可以使用词典理解。
def turnIntoFractions(d):
total = float(sum(d.values()))
return {key:(value/total) for key,value in d.items()}
答案 1 :(得分: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
。
答案 2 :(得分:0)
您似乎想要编辑dict,但您的代码会返回一个新对象,这实际上是更好的做法。
def turnIntoFractions(mydict):
values=d.values()
total=float(sum(values))
result = {}
for key, val in mydict.items():
result[key] = val/total
return result
答案 3 :(得分:0)
使用字典理解
sum = float(sum(census.itervalues()))
newDict = {k : (v / sum) for k,v in census.iteritems()}
for python 2.6:
newDict = dict((k,v /sum) for (k,v) in census.iteritems())
答案 4 :(得分:0)
以下Python代码将修改字典的键以浮动值。
def turnIntoFractions(mydict):
total = sum(mydict.values())
for key in mydict:
mydict[key] = float(mydict[key]) / total
答案 5 :(得分:0)
你的代码有正确的想法,但也有一些小错误。 这是一个有效的代码:
def turnIntoFractions(d):
L=d.values()
total=sum(L)
f=[]
for count in L:
f.append(float(count/float(total)))
return f
census={'a':4, 'b':1, 'c':3}
print(turnIntoFractions(census))
请注意,python区分大小写,因此f与F不同,并且还需要引用字符串的键