2017-05-09 14 views
1

Tclには、実際にキー付きリストの値である受信リストがあります。このTclのキー付き辞書にリストを割り当てる

set list1 [list value1 value2 value3 value4 value5 value6 value7 value8 value9] 
set keys [list key1 key2 key3] 

よう

何か私は、Tclのキーリストのキーをキー配列にリスト1を代入したいと思います。

これを行うには、これが最善の方法ですか?それとももっと洗練された方法がありますか?

foreach {a b c} $list1 { 
     dict lappend mydict key1 $a 
     dict lappend mydict key2 $b 
     dict lappend mydict key3 $c 
} 

答えて

2

まあ、私はもっとやるように誘惑されたい:

foreach {a b c} $list1 { 
    foreach k $keys v [list $a $b $c] { 
     dict lappend mydict $k $v 
    } 
} 

こと、または単純な二重のforeachを使用する前に、着信リストの長さにキーのリストを拡大するかのいずれか:

foreach k [lrepeat [expr {[llength $list1]/[llength $keys]}] {*}$keys] v $list1 { 
    dict lappend mydict $k $v 
} 

これは、あなたがすでに行っているよりもエレガント(または堅牢)であるかどうかは完全にはわかりません。

+0

ありがとうございました。 2番目のコードスニペットに誤字がないのは確実ですか? lrepeatコマンドで$ list1でない$ keysでなければなりませんか? – Jonjilla

+0

@Jonjilla Err、はい。一定。 (仕事のために出発する前にコードを実行する時間がなかったので、バグが入り込んだ...) –

関連する問題