Python 使用dict值进行除法

Python 使用dict值进行除法,python,python-3.x,dictionary,floating-point,Python,Python 3.x,Dictionary,Floating Point,编辑:我发现我的问题=X结果是我意外地包含了另一个迭代器的值,这导致了操作中的静态值。我的错 问题:我是删除问题还是保留问题 我试图编写一个脚本,从嵌套字典中读取值,然后执行除法操作,并将其作为嵌套字典中的key:value对返回 所以我先从这个开始: main_dict = {nested: {first_number: int, second_number: int} nested1: {first_number: in

编辑:我发现我的问题=X结果是我意外地包含了另一个迭代器的值,这导致了操作中的静态值。我的错

问题:我是删除问题还是保留问题

我试图编写一个脚本,从嵌套字典中读取值,然后执行除法操作,并将其作为嵌套字典中的key:value对返回

所以我先从这个开始:

main_dict = {nested: {first_number: int,
                      second_number: int}

             nested1: {first_number: int,
                       second_number: int}
             ...
             }
我想得到的是:

main_dict = {nested: {first_number: int,
                      second_number: int
                      wanted_number: float}

             nested1: {first_number: int,
                       second_number: int
                       wanted_number: float}
             ...
             }
他所做的是:

for nested in main_dict:
    main_dict[nested]['wanted_number'] = float(main_dict[nested]['first_number'])
                                         / float(main_dict[nested]['second_number'])
例如,第一个数字=11,第二个数字=15,我应该得到

main_dict[nested]['wanted_number'] = 0.733...
但是我得到了

main_dict[nested]['wanted_number'] = 1.0
到目前为止,我已经尝试使用:from_futureimport division,numpy的true_division,这两个部分在我使用Python 3.4时都应该是多余的

输出类型是float(),我尝试在除法之前和除法之后将值显式转换为float()。我还试过一个术语是float(),另一个是int()。我还尝试将十进制模块与getcontext()一起使用。prec=6


这是执行功能的一个特点,或者可能是值指向箱子的方式?

不应该有这种舍入

通过在
for
循环中打印出来,确认要分割的数字确实不同

你是对的,在Python3中,你不需要任何魔法来获得浮点除法。甚至不需要
float()

Python 3.3.2+ (default, Feb 28 2014, 00:52:16) 
[GCC 4.8.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 11/15
0.7333333333333333
您还没有展示dict是如何构造的。确保您使用的是不同的子字典,而不是引用相同的子字典或其他内容

在REPL中运行它,向我们显示您看到的内容

>>> main_dict = {'nested': {'first_number': 11,
...                       'second_number': 15},
...              'nested1': {'first_number': 3,
...                        'second_number': 4}
...              }
>>> 
>>> for nested in main_dict:
...     main_dict[nested]['wanted_number'] = main_dict[nested]['first_number'] / main_dict[nested]['second_number']
... 
>>> main_dict
{'nested1': {'wanted_number': 0.75, 'second_number': 4, 'first_number': 3}, 'nested': {'wanted_number': 0.7333333333333333, 'second_number': 15, 'first_number': 11}}

我通过呼叫整个主目录并手动检查号码进行检查。这就是我发现错误的原因。我还调用了main_dict[nested]['first_number']、main_dict[nested]['second_number']和main_dict[nested]['wanted_number']来检查所有类型和数字。通缉令编号返回浮点和1.0。我还刚刚检查了一下,脚本中的15/15让我得到了0.0,所以我真的很困惑,我认为你在错误的地方寻找bug。它在代码的其他地方。发布显示此错误的最短片段,以便我们可以复制它