修改字典

1 投票
6 回答
861 浏览
提问于 2025-04-17 07:29

我需要修改一个字典。我有一个字典,里面的值是整数,我想把每个值替换成它在所有值中的比例,比如说:

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()}

撰写回答