从列表中为Python字典赋值和显示值的正确方法是什么?

从列表中为Python字典赋值和显示值的正确方法是什么?,python,dictionary,user-interface,Python,Dictionary,User Interface,我正在从一台设备上读取测量值(结果)列表,每次20次测量。我需要将它们分成两个单独的组,并将它们放在两个不同的字典中,进行一些通过/失败计算,然后在GUI中显示它们。到目前为止,我得到的是: import sys from collections import OrderedDict from tkinter import * x=[] x1=[] Results = ([1.50229780e+00, 4.94528400e-01,-4.74700000e-04,-3.42900000

我正在从一台设备上读取测量值(结果)列表,每次20次测量。我需要将它们分成两个单独的组,并将它们放在两个不同的字典中,进行一些通过/失败计算,然后在GUI中显示它们。到目前为止,我得到的是:

import sys

from collections import OrderedDict

from tkinter import *

x=[]
x1=[]

Results = ([1.50229780e+00, 4.94528400e-01,-4.74700000e-04,-3.42900000e- 
04,-2.24200000e-04,-1.71400000e-04,-1.71400000e-04,-1.84600000e-04,
-1.31900000e-04,-1.45100000e-04,-6.59000000e-05, 1.32000000e-05,
0.00000000e+00,-1.32000000e-05,-1.32000000e-05,-3.96000000e-05,
-1.32000000e-05,-6.59000000e-05,-3.96000000e-05,-6.59000000e-05])

# DUT1, DUT2 are dictionary....  Access by 'CH1' or 'CH9'....


DUT1 = OrderedDict()
DUT1['CH1']=0
DUT1['CH2']=0
DUT1['CH3']=0
DUT1['CH4']=0
DUT1['CH5']=0
DUT1['CH6']=0
DUT1['CH7']=0
DUT1['CH8']=0
DUT1['CH9']=0
DUT1['CH10']=0

DUT2 = OrderedDict()
DUT2['CH1']=0
DUT2['CH2']=0
DUT2['CH3']=0
DUT2['CH4']=0
DUT2['CH5']=0
DUT2['CH6']=0
DUT2['CH7']=0
DUT2['CH8']=0
DUT2['CH9']=0
DUT2['CH10']=0


i=0

for key in DUT1:
    DUT1[key]=Results[i]
    i=i+1

i=len(DUT1)

for key in DUT2:
    DUT2[key]=Results[i]
    i=i+1

root = Tk()

for key,items in DUT1.items():
    y=("%s = %s\n" % (key,items))
    sys.stdout.write("%s %s\n" % (key,items));sys.stdout.flush()
    x.append(y)

for key,items in DUT2.items():
    y1=("%s = %s\n" % (key,items))
    sys.stdout.write("%s %s\n" % (key,items));sys.stdout.flush()
    x1.append(y1)

Label(root, text = "DUT1 Results").grid(row=0,ipadx = 10,ipady = 10)
Label(root, text = x ).grid(row=1,ipadx = 10,ipady =10)

Label(root, text = "DUT2 Results").grid(row=2,ipadx = 10,ipady = 10)
Label(root, text = x1 ).grid(row=3,ipadx = 10,ipady =10)

mainloop()
我得到的输出(打印到控制台)是:

为什么DUT1是非科学记数法,而DUT2是

当标签更新时,我得到:

{CH1 = 1.5022978
}{CH2 = 0.4945284
}{CH3 = -0.0004747
}{CH4 = -0.0003429
}{CH5 = -0.0002242
}{CH6 = -0.0001714
}{CH7 = -0.0001714
}{CH8 = -0.0001846
}{CH9 = -0.0001319
}{CH10 = -0.0001451
}

{CH1 = -6.59e-05
}{CH2 = 1.32e-05
}{CH3 = 0.0
}{CH4 = -1.32e-05
}{CH5 = -1.32e-05
}{CH6 = -3.96e-05
}{CH7 = -1.32e-05
}{CH8 = -6.59e-05
}{CH9 = -3.96e-05
}{CH10 = -6.59e-05
}

为什么要打印括号?

Python 3以科学符号编号<1e-4打印。 例如:

可以使用格式化打印强制执行格式

# for non-scientific:
print("{0:0.6f}".format(1e-5)) #out: 0.000010
# forcing scientific notation:
print('%.2E' % 40800000000.00000000000000) #out: 4.08E+10
print('%.4E' % 1e-2) #out: 1.0000E-02
科学记数法的例子取自

这是你的代码的一个工作版本,我认为它符合你的要求。它通过for循环中的连接创建一个格式化字符串,然后再创建一个标签来放置它

import sys
from collections import OrderedDict
from tkinter import *

x=[]
x1=[]

Results = ([1.50229780e+00, 4.94528400e-01,-4.74700000e-04,-3.42900000e-04,-2.24200000e-04,-1.71400000e-04,-1.71400000e-04,-1.84600000e-04,-1.31900000e-04,-1.45100000e-04,-6.59000000e-05, 1.32000000e-05,0.00000000e+00,-1.32000000e-05,-1.32000000e-05,-3.96000000e-05,-1.32000000e-05,-6.59000000e-05,-3.96000000e-05,-6.59000000e-05])

# DUT1, DUT2 are dictionary....  Access by 'CH1' or 'CH9'....

DUT1 = OrderedDict()
DUT1['CH1']=0
DUT1['CH2']=0
DUT1['CH3']=0
DUT1['CH4']=0
DUT1['CH5']=0
DUT1['CH6']=0
DUT1['CH7']=0
DUT1['CH8']=0
DUT1['CH9']=0
DUT1['CH10']=0

DUT2 = OrderedDict()
DUT2['CH1']=0
DUT2['CH2']=0
DUT2['CH3']=0
DUT2['CH4']=0
DUT2['CH5']=0
DUT2['CH6']=0
DUT2['CH7']=0
DUT2['CH8']=0
DUT2['CH9']=0
DUT2['CH10']=0


i=0

for key in DUT1:
    DUT1[key]=Results[i]
    i=i+1

i=len(DUT1)

for key in DUT2:
    DUT2[key]=Results[i]
    i=i+1

root = Tk()

for key,items in DUT1.items():
    y=("%s = %s\n" % (key,items))
    sys.stdout.write("%s %.4E\n" % (key,items));sys.stdout.flush()
    x.append(y)

for key,items in DUT2.items():
    y1=("%s = %s\n" % (key,items))
    sys.stdout.write('%s %.4E\n' % (key,items));sys.stdout.flush()
    x1.append(y1)

Label(root, text = "DUT1 Results").grid(row=0,ipadx = 10,ipady = 10)
s = ''
for key,items in DUT1.items():
    s += '%s %.4E\n' % (key,items)
Label(root, text = s ).grid(row=1,ipadx = 10,ipady =10)

Label(root, text = "DUT2 Results").grid(row=2,ipadx = 10,ipady = 10)
s1 = ''
for key,items in DUT2.items():
    s1 += '%s %.4E\n' % (key,items)
Label(root, text = s1 ).grid(row=3,ipadx = 10,ipady =10)

mainloop()

去掉方括号的一种方法是使用join()例如:Label(root,text=“”.join(x)).grid(row=1,ipadx=10,ipady=10)
# for non-scientific:
print("{0:0.6f}".format(1e-5)) #out: 0.000010
# forcing scientific notation:
print('%.2E' % 40800000000.00000000000000) #out: 4.08E+10
print('%.4E' % 1e-2) #out: 1.0000E-02
import sys
from collections import OrderedDict
from tkinter import *

x=[]
x1=[]

Results = ([1.50229780e+00, 4.94528400e-01,-4.74700000e-04,-3.42900000e-04,-2.24200000e-04,-1.71400000e-04,-1.71400000e-04,-1.84600000e-04,-1.31900000e-04,-1.45100000e-04,-6.59000000e-05, 1.32000000e-05,0.00000000e+00,-1.32000000e-05,-1.32000000e-05,-3.96000000e-05,-1.32000000e-05,-6.59000000e-05,-3.96000000e-05,-6.59000000e-05])

# DUT1, DUT2 are dictionary....  Access by 'CH1' or 'CH9'....

DUT1 = OrderedDict()
DUT1['CH1']=0
DUT1['CH2']=0
DUT1['CH3']=0
DUT1['CH4']=0
DUT1['CH5']=0
DUT1['CH6']=0
DUT1['CH7']=0
DUT1['CH8']=0
DUT1['CH9']=0
DUT1['CH10']=0

DUT2 = OrderedDict()
DUT2['CH1']=0
DUT2['CH2']=0
DUT2['CH3']=0
DUT2['CH4']=0
DUT2['CH5']=0
DUT2['CH6']=0
DUT2['CH7']=0
DUT2['CH8']=0
DUT2['CH9']=0
DUT2['CH10']=0


i=0

for key in DUT1:
    DUT1[key]=Results[i]
    i=i+1

i=len(DUT1)

for key in DUT2:
    DUT2[key]=Results[i]
    i=i+1

root = Tk()

for key,items in DUT1.items():
    y=("%s = %s\n" % (key,items))
    sys.stdout.write("%s %.4E\n" % (key,items));sys.stdout.flush()
    x.append(y)

for key,items in DUT2.items():
    y1=("%s = %s\n" % (key,items))
    sys.stdout.write('%s %.4E\n' % (key,items));sys.stdout.flush()
    x1.append(y1)

Label(root, text = "DUT1 Results").grid(row=0,ipadx = 10,ipady = 10)
s = ''
for key,items in DUT1.items():
    s += '%s %.4E\n' % (key,items)
Label(root, text = s ).grid(row=1,ipadx = 10,ipady =10)

Label(root, text = "DUT2 Results").grid(row=2,ipadx = 10,ipady = 10)
s1 = ''
for key,items in DUT2.items():
    s1 += '%s %.4E\n' % (key,items)
Label(root, text = s1 ).grid(row=3,ipadx = 10,ipady =10)

mainloop()