这是清单
value = {'a': [['1312.98680732', 14.28625384],
['1312.98680735', 20.303],
['1312.98680736', 9.78438636]],
'b': [['1307.00000001', 0.02968967],
['1307.00000000', 1.948],
['1306.53301802', 0.02]],
'c': 0,
'd': 226843654}
我能够提取并获得
a = [['1312.98680732', 14.28625384],
['1312.98680735', 20.303],
['1312.98680736', 9.78438636]]
但是我需要将引用的值从string转换为float。
期望的输出:
a = [[1312.98680732, 14.28625384],
[1312.98680735, 20.303],
[1312.98680736, 9.78438636]]
我尝试了list(map(float, a)
,但只有在我有一个值的情况下才能正常工作。
答案 0 :(得分:2)
对于嵌套数据,请使用嵌套的list comprehension:
>>> a = [['1312.98680732', 14.28625384], ['1312.98680735', 20.303], ['1312.98680736', 9.78438636]]
>>> [[float(x) for x in group] for group in a]
[[1312.98680732, 14.28625384], [1312.98680735, 20.303], [1312.98680736, 9.78438636]]
答案 1 :(得分:2)
您可以使用列表推导来浏览旧列表并生成一个新列表。使用list unpacking分隔每个外部列表位置的两个值的列表。
a = [[float(s), v] for s,v in a]
答案 2 :(得分:1)
list(map(lambda l: list(map(float, l)), a))
如果您不想使用列表推导
答案 3 :(得分:0)
如果它始终是辅助列表中第一个字符串的元素,那么您可以遍历第一个列表(a
)并对a
内的每个列表进行迭代,转换为第一项为float
,如下所示:
for item in a:
item[0] = float(item[0])
答案 4 :(得分:0)
a
是一个列表清单。您希望将这些内部列表中的第一个项目转换为浮点数。你可以用列表理解来做到这一点。
[[float(item[0]), item[1]] for item in a]
答案 5 :(得分:0)
这将有效:
a = [[float(n) for n in b] for b in value["a"]]
答案 6 :(得分:0)
您也可以尝试使用isinstance()
:
a = [[float(x) if isinstance(x, str) else x for x in lst] for lst in a]
给出了:
[[1312.98680732, 14.28625384], [1312.98680735, 20.303], [1312.98680736, 9.78438636]]
答案 7 :(得分:0)
这样的事情?
a = [['1312.98680732', 14.28625384],
['1312.98680735', 20.303],
['1312.98680736', 9.78438636]]
print(list(map(lambda x:list(map(lambda y:float(y),x)),a)))
输出:
[[1312.98680732, 14.28625384], [1312.98680735, 20.303], [1312.98680736, 9.78438636]]