D = dict [a = 2,b = 4,c = 1,d = 3]
我在排序(升序)后使用上面的字典,并显示排序后的值以及最低值。
对话框中的所需输出
c=1
a=2
d=3
b=4
c lowest value is 1
我正在尝试以下代码:
D dict[a= 2, b=4, c=1, d=3]
f= sorted(D.items(), key=operator.itemgetter(1))
g= f[0]
f= [str(x) for x in f]
g= [str(x) for x in g]
msg= '\n'.join(f) + 'lowest value is\n'.join(g)
dlg= wx.MessageDialog(self,msg,"lowest value",wx.OK)
dlg.showModal()
dlg.Destroy()
使用这个我们得到:
(c=1)
(a=2)
(d=3)
(b=4)c
lowest value is 1
我们不希望在b = 4之后'c'而是我们希望下一行中的'c'和所需的输出一样。 请帮忙......
答案 0 :(得分:0)
插入额外的换行符:
msg = '\n'.join(f) + '\n\n' + ' lowest value is '.join(g) + '\n'
虽然最后一行更符合逻辑:
msg = '\n'.join(f) + '\n\n%s lowest value is %s\n' % tuple(g)
你的字典定义怎么样?
D dict[a= 2, b=4, c=1, d=3]
意为
D = {'a': 2, 'b':4, 'c':1, 'd':3}
答案 1 :(得分:0)
将消息更改为
>>> msg = '\n'.join(map(str,f)) + "\n\n{0} lowest value is {1}".format(g[0],g[1])
这将输出:
>>> print msg
('c', 1)
('a', 2)
('d', 3)
('b', 4)
c lowest value is 1
或者,如果您希望代码输出c = 1,a = 1等稍微更改一下msg:
>>> msg = '\n'.join(map(lambda x: str(x[0]) + "=" +
str(x[1]),f)) + "\n\n{0} lowest `value is {1}".format(g[0],g[1])`
这将输出:
>>> print msg
c=1
a=2
d=3
b=4
c lowest value is 1