リストから繰り返しの単語をカウントする方法、私はセルのリストを持っている
- U1864
- u_dhm_lut/U4
- u_dhm_lut/lut_out_reg_2_
- u_dhm_lut/lut_in_reg_2_
そして、それぞれの名前が何回来るか計算したい 結果:
- U1864 1
- u_dhm_lut/lut_out_reg_2_ 18
- u_dhm_lut/lut_in_reg_2_ 14
- u_dhm_lut/U4 10
コード等である。
set cell_cnt [open "demo.txt" r]
set cell [read $cell_cnt]
set b [open "number_of_cell.txt" w+]
proc countwords {cell_count} {
set unique_name [lsort -unique $cell_count]
foreach count $unique_name {
set cnt 0
foreach item $cell_count {
if {$item == $count} {
incr cnt
}
}
puts $b "$count :: $cnt"
}
}
countwords $cell
それができないと言います"b"を読んでください:実行中にそのような変数がありません "$ b" $ count :: $ cnt ""を入れます なぜprocの中にファイルを書き込めないのですか?
それは*別の*よくある質問です。プロシージャ内のコードが変数 "b"を使用できないのは、その変数がグローバルであるためです。変数を使用する前に、:: bを使用するか、コマンド "global b"(引用符なし)を呼び出します。また、(私の答えのように)周波数を数えるためのもう少し簡単なコードの使用を検討してください。将来同じコードを使って作業していれば、あなたはあなたに感謝します。 –