在TCL中处理2个列表

在TCL中处理2个列表,tcl,Tcl,随着输出要求的改变,我将重新表述我先前的问题 两张名单 fruit_type={apple, apple, orange, orange, pineapple, pineapple, pineapple} num_type = {2, 1, 1, 2, 3, 1, 2} 预期产量 apple 2 apple 1 orange 1 2 pineapple 3 pineapple 1 2 UPD:由于需求再次发生变化,这里有一个新版本: proc fruits-of-labour-for-new

随着输出要求的改变,我将重新表述我先前的问题

两张名单

fruit_type={apple, apple, orange, orange, pineapple, pineapple, pineapple}
num_type = {2, 1, 1, 2, 3, 1, 2}
预期产量

apple 2
apple 1
orange 1 2
pineapple 3
pineapple 1 2
UPD:由于需求再次发生变化,这里有一个新版本:

proc fruits-of-labour-for-new-requirements {fruit_type num_type} {
    foreach fruit $fruit_type num $num_type {
        if {[info exists resultF]&&
            ([lindex $resultF end] eq $fruit)&&
            ([lindex $resultN end end] <= $num)} {
            lset resultN end [list {*}[lindex $resultN end] $num]
        } else {
            lappend resultF $fruit
            lappend resultN [list $num]
        }
    }
    if {[info exists resultF]} {
        # $resultF is a list of fruits, $resultN is a list of
        # lists with corresponding numbers.
        return [list $resultF $resultN]
    }
}

预期输出背后的逻辑是?。。当你询问TCLread fruit_类型时,请调用'em list',直到num_类型按升序排列,然后将它们放在一起作为该fruit_类型。如果num_类型不是按升序排列的,则中断循环并将水果_类型与关联的num_类型挂起获取一些编译问题。请解释您的codeCompilation问题-您正在尝试编译TCL吗?你从哪里得到编译器的?是的,我可以解释我的代码。它执行您所说的操作,例如,循环并比较最后处理的水果/num(如果有)与当前的水果/num,或者修改最后一对元素,或者创建新的元素对。这些对保存在列表列表中。最后,列表列表中的所有列表都被连接起来,以获得您指定的输出。非常感谢。我们如何将fruit_类型和num_类型添加到不同的变量中,而不是将其放入结果中?我们只是将它们添加到不同的变量中,并使用这些变量进行比较。。谢谢你,安东。尽管如此,我还是接受了你的回答。谢谢你抽出时间。您能告诉我如何将fruit_type和num_type转换为不同的变量吗。再次感谢
proc fruits-of-labour-for-new-requirements {fruit_type num_type} {
    foreach fruit $fruit_type num $num_type {
        if {[info exists resultF]&&
            ([lindex $resultF end] eq $fruit)&&
            ([lindex $resultN end end] <= $num)} {
            lset resultN end [list {*}[lindex $resultN end] $num]
        } else {
            lappend resultF $fruit
            lappend resultN [list $num]
        }
    }
    if {[info exists resultF]} {
        # $resultF is a list of fruits, $resultN is a list of
        # lists with corresponding numbers.
        return [list $resultF $resultN]
    }
}