Как форматировать строки и десятичные числа при добавлении в список в Python - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь отформатировать десятичную (до 2 десятичных точек) и, возможно, строки ПРИ СОЗДАНИИ списка , который содержит диктонары.Я использую Python 3.

Это то, что я придумал, но, очевидно, это не работает (отсюда и вопрос.)

class foo:
    def __init__(self):
        self.datalist = []

    def push_data(self, s1, int2, flt3):
        self.datalist.append({
            "s1": '%s',
            "int2": '%i',
            "dec3": '%0.2f'
        }) % (s1, int2, flt3)

    def print_data(self):
        print(self.datalist)


f = foo()
f.push_data("HelloWorld", 1, 3.1415)
f.print_data()

Я бы хотел, чтобы список содержал

[{'s1': 'HELLOWORLD', 'dec2': 1.00, 'dec3': 3.14}]

Пожалуйста, помните, что я Я НЕ пытаюсь отформатировать данные на выходе / распечатке, но поскольку данные помещаются / добавляются в список.

Спасибо завперед.

Ответы [ 3 ]

0 голосов
/ 10 июня 2018

Это можно сделать при форматировании каждого элемента, а не в конце всех элементов, это небольшое изменение по сравнению с вашим кодом, но оно работает:

class foo:
    def __init__(self):
        self.datalist = []
    def push_data(self, s1, int2, flt3):
        self.datalist.append({
            "s1": '%s' % s1,
            "int2": '%i' % int2,
            "dec3": '%0.2f' % flt3
        })
    def print_data(self):
        return self.datalist


f = foo()
f.push_data("HelloWorld", 1, 3.1415)
f.print_data()

Результат:

[{'s1': 'HelloWorld', 'int2': '1', 'dec3': '3.14'}]

0 голосов
/ 10 июня 2018

Я считаю, что это то, что вы хотите.

class foo:
    def __init__(self):
        self.datalist = []

    def push_data(self, s1, int2, flt3):
        self.datalist.append("{"\
            "s1: %s,"\
            "int2: %i,"\
            "dec3: %0.2f}" % (s1, int2, flt3))

    def print_data(self):
        return self.datalist


f = foo()
f.push_data("HelloWorld", 1, 3.1415)
f.print_data()

Производит

['{s1: HelloWorld, int2: 1, dec3: 3.14}']

0 голосов
/ 10 июня 2018

Вы должны отформатировать каждое поле индивидуально:

class foo:
    def __init__(self):
        self.datalist = []

    def push_data(self, s1, int2, flt3):
        self.datalist.append({
            "s1": '%s' % s1,
            "int2": '%i' % int2,
            "dec3": '%0.2f' % flt3
        })

    def print_data(self):
        return self.datalist


f = foo()
f.push_data("HelloWorld", 1, 3.1415)
f.print_data()

# [{'dec3': '3.14', 'int2': '1', 's1': 'HelloWorld'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...