将特定值从字典转换为浮点数

时间:2019-06-06 06:02:32

标签: python-3.x

我有这本字典

    dict_X = {
            'A': {'a': 371, 'b': 4925, 'c': 39, 'd': 8},
            'B': {'a': 400, 'b': 4659, 'c': 37, 'd': 11},
            'C': {'a': 19, 'b': 214, 'c': 1, 'd': 1},
            'D': {'a': 16, 'b': 115, 'c': 0, 'd': 1}
        }

我需要将'c'和'd'的值转换为浮点,并找到'c'与'd'的比率。

我知道我必须使用float()方法,我不知道是如何将其用于字典中字典中的值。

需要将值转换为'c'和'd'以进行浮动以找到'c':'d'的比率。谢谢你们的帮助。

1 个答案:

答案 0 :(得分:0)

您在注释中发布的代码几乎是正确的,除了您忘记保留内部字典的键,而是使用嵌套结构set之外。正确的dict理解应为:

{outer_k: {inner_k: float(inner_v) for inner_k, inner_v in outer_v.items()} for outer_k, outer_v in dict_X.items()}

但是,这会将所有值(abcd)转换为浮点数,而不仅仅是c和{{1} }。您可以使用以下d条件将其限制为仅那些键:

if-else

或者,由于根据您的发言,您只需要进行浮点转换即可进行计算,因此只需在使用该表达式之前对其进行强制转换,然后将{outer_k: {inner_k: float(inner_v) if inner_k in ['c','d'] else inner_v for inner_k, inner_v in outer_v.items()} for outer_k, outer_v in dict_X.items()} 保留原样。例如,

dict_X

仅转换其中之一就足以使结果成为float_ratio = float(dict_X['A']['c'])/dict_X['A']['d']