Десятичный список для размещения списка в словаре - PullRequest
0 голосов
/ 24 октября 2018

У меня есть список из запроса mssql, который включает в себя десятичные дроби.Например:

 [(1, Decimal('33.00'), Decimal('5.30'), Decimal('50.00')),
  (2, Decimal('17.00'), Decimal('0.50'), Decimal('10.00'))]

Я хочу преобразовать это в диктовку и число с плавающей точкой следующим образом:

 {1: [33.00, 5.30, 50.00],
  2: [17.00, 0.50, 10.00]}

Я написал ниже строки:

load_dict = {key: values for key, *values in dataRead}

, что приводит к:

{1: [Decimal('33.00'), Decimal('105.30'), Decimal('25650.00')],
 2: [Decimal('17.00'), Decimal('40.50'), Decimal('10000.00')]}

Я спрашиваю, есть ли в любом случае это преобразование со списком / диктом?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

вы можете использовать диктовку с приведением к float, например:

from decimal import Decimal

lst = [(1, Decimal('33.00'), Decimal('5.30'), Decimal('50.00')),
  (2, Decimal('17.00'), Decimal('0.50'), Decimal('10.00'))]

ret = {key: [float(f) for f in values] for key, *values in lst}
print(ret)
# {1: [33.0, 5.3, 50.0], 2: [17.0, 0.5, 10.0]}
0 голосов
/ 24 октября 2018

Apply float для значений:

from decimal import Decimal

data = [(1, Decimal('33.00'), Decimal('5.30'), Decimal('50.00')),
  (2, Decimal('17.00'), Decimal('0.50'), Decimal('10.00'))]

load_dict = {key: list(map(float, values))  for key, *values in data}

print(load_dict)

Выход

{1: [33.0, 5.3, 50.0], 2: [17.0, 0.5, 10.0]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...