2017-12-30 14 views
-2

목록에있는 값이 실제 유형이고 문제를 float로 변환해야합니다. 다음과 같이목록의 일부 값을 부동 소수점으로 변환하십시오.

목록은 같습니다 'O'등의

[{ 'O' : 15.2565, 'H' : 16, 'L' : 14, 'C' : 14.56, 'T' : '2017-12-30T13:30:00'}, 
{ 'O' : 14.56, 'H' : 17, 'L' : 13, 'C' : 16.654 'T' : '2017-12-30T13:35:00'}, 
etc] 

값은 실제에 있고 변환해야, 어떻게 내가 할 것이라고 파이썬에서

float(x) for x in data 

아무튼

로 나를 위해 일하지 마라.

+7

파이썬에서 어떤 유형의'real'이없는이 그들 주위에 list뿐만 아니라 다시 할 dicts 필요로 중첩 된 이해가 있습니다. – Daniel

+4

'O'값은 이미 부동입니다. 할 것이 없다. –

+0

여기에 표시된 샘플 데이터는 해당 값이 이미 부동 상태이므로 실제 데이터를 나타내지 않습니다. 아마도'int' 또는'str'가'float'으로 변환하기를 원합니까? –

답변

0

값이 (적어도 일부는) float으로 변환 될 수있는 dict 개체 목록이 있습니다. 본래의 접근법은은 다음과 같습니다

for dct in data: 
    for k in dct: 
    try: 
     dct[k] = float(dct[k]) 
    except (ValueError, TypeError): 
     pass 

당신은 키가 뜰 값에 매핑하는 사전에 알고 있다면, 당신은 몇 줄을 저장하는 의심 혜택에 대한 이해를 사용할 수 있습니다.

data = [ 
    {k: float(v) if k in ('O', 'H', 'L', 'C') else v for k, v in dct.items()} 
    for dct in data 
] 
+2

나는 OP가 무엇을 원하는지 아직도 확신하지 못한다. 그러나이 질문을 대답으로 넣으 려한다면, (ValueError, TypeError) except를 약간 더 강력하게 만들 수있다. –

+0

아 감사합니다. 조금 더 쓸 수 있지만 지금은 감사합니다. – nerdlab

관련 문제