Группировка в ткл - PullRequest
       11

Группировка в ткл

0 голосов
/ 13 мая 2018

Как создать группировку в tcl. Я ищу долго. Помоги мне сделать это, например

set unique "arun samuel"
set all "arun abc1 abc2 abc3 arun abc4 abc5 abc6 arun abc7 abc8 abc9 samuel xyz1 xyz2 xyz3 samuel xyz4 xyz5 samuel xyz6"

Я хочу o / p, как это:

Арун:

abc1

abc2

...

abc8

Самуил:

xyz1

xyz2

...

xyz6

Я попробовал этот код:

set unique "arun samuel"
set all "arun abc1 abc2 abc3 arun abc4 abc5 abc6 arun abc7 abc8 abc9 samuel xyz1 xyz2 xyz3 samuel xyz4 xyz5 samuel xyz6"

foreach f $all {
set id [lindex $unique [expr [lsearch $unique $f + ]]]
puts "Scrubber id is $unique"
puts "Scrubber id is $id"

}

Но я не знаю, как этого добиться.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Одним из способов решения этой проблемы является использование массива :

set unique "arun samuel"
set all "arun abc1 abc2 abc3 arun abc4 abc5 abc6 arun abc7 abc8 abc9 samuel xyz1 xyz2 xyz3 samuel xyz4 xyz5 samuel xyz6"

array set groups {}
foreach element $all {
    if {$element in $unique} {
        set key $element
    } else {
        lappend groups($key) $element
    }
}

puts $all
parray groups

Алгоритм прост:

  1. Начните с пустого массива
  2. Для каждого элемента в списке all, если элемент находится в unique, запомните его как ключ;в противном случае добавьте этот элемент в массив.

Обратите внимание, что вы можете получить доступ к группировке для arun как $groups(arun).

0 голосов
/ 13 мая 2018

Это должно быть довольно просто.Вы перебираете все, проверяете, является ли текущий элемент одним из «уникальных» элементов, если да, это текущая группа, в противном случае добавьте элемент в текущую группу.

set unique "arun samuel"
set all "arun abc1 abc2 abc3 arun abc4 abc5 abc6 arun abc7 abc8 abc9 samuel xyz1 xyz2 xyz3 samuel xyz4 xyz5 samuel xyz6"

set current {}
set result {}
foreach e $all {
    if {$e in $unique} {
        set current $e
    } else {
        dict lappend result $current $e
    }
}
dict for {group values} $result {
    puts "${group}: $values"
}

Вывод:

arun: abc1 abc2 abc3 abc4 abc5 abc6 abc7 abc8 abc9
samuel: xyz1 xyz2 xyz3 xyz4 xyz5 xyz6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...