列表值中的python数字格式

时间:2018-01-10 22:52:34

标签: python python-3.x

这是清单

 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),但只有在我有一个值的情况下才能正常工作。

8 个答案:

答案 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]]