Как напечатать два сообщения в одном диалоговом окне, используя Python? - PullRequest
0 голосов
/ 06 октября 2011

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

мы не хотим 'c' после b = 4, вместо этого мы хотим 'c' в следующей строке, как в желаемом выводе. пожалуйста, помогите ...

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Изменить сообщение на

>>> 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 = '\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
0 голосов
/ 06 октября 2011

Вставка дополнительных символов новой строки:

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}

...