我有这本字典
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'的比率。谢谢你们的帮助。
答案 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()}
但是,这会将所有值(a
,b
,c
,d
)转换为浮点数,而不仅仅是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']
。