печатать словарные ключи и значения в одном столбце в tcl - PullRequest
0 голосов
/ 25 февраля 2020

Я новый изучающий язык сценариев tcl. Я использую TCL версии 8.5. Я читаю текстовый файл через tcl скрипт и считаю частоту подобных слов. Я использовал l oop и словарь для подсчета похожих слов и их частоты, но вывод программы печатается так: альфа 4 бета 2 гамма 1 дельта 1 Но я хочу напечатать его в одном столбце для каждого ключа, пары значений словаря или Мы могли бы сказать, что каждая клавиша, пара значений, выводится построчно в выводе. Ниже приведен мой скрипт в tcl и его вывод в конце.

set f [open input.txt]
set text [read $f]
foreach word [split $text] {
    dict incr words $word
}
 puts $words

Вывод вышеприведенного скрипта: альфа 4 бета 2 гамма 1 дельта 1

1 Ответ

1 голос
/ 25 февраля 2020

Вы должны сделать:

dict for {key value} $words {
    puts "$key $value"
}

При чтении документации dict позаботьтесь о том, какие подкоманды требуют dictionaryVariable (например, dict incr) и которые требуют dictionaryValue (например, dict for)


Для хорошего форматирования, как предлагает Донал, вот очень краткий метод:

set maxWid [tcl::mathfunc::max {*}[lmap w [dict keys $words] {string length $w}]]
dict for {word count} $words {puts [format "%-*s = %s" $maxWid $word $count]}

Или посмотрите исходный код команды parray для дальнейшего вдохновения:

parray tcl_platform  ;# to load the proc
info body parray
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...