我试图格式化十进制(到2个小数点)和可能的字符串WHILE BUILDING包含dictonaries的列表。我正在使用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}]
请记住,我不是要尝试格式化输出/打印数据,而是将数据放置/附加到列表中。
提前致谢。
您必须单独格式化每个字段:
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'}]
这可以在格式化每个元素时完成,而不是在所有项目的末尾完成,这是对代码的一个小改动,但它可以工作:
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'}]
我相信这就是你想要的。
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}']