次の2つの列を持つテキストファイルがあります。
26 0.000342231
27 0.000342231
28 0.000684463
29 0.00136893
30 0.00102669
31 0.00308008
32 0.00308008
33 0.00444901
34 0.00718686
35 0.00718686
36 0.0109514
37 0.0123203
...
テキストファイルを繰り返し、各列の値を辞書に似た連想配列に保存したいと思います。可能であれば、各列(intおよびfloat)の値のデータ型を保持したいと思います。
計算するには、ファイルの最後まで特定の間隔の2番目の列値を合計する必要があります。たとえば、「(最初の列)関連値29(0.00136893)を最後の関連値まで合計します。
最良のアプローチは何ですか? BashとPythonのソリューションが最も人気があります!
ベストアンサー1
編集、質問を誤って読み、あなたが尋ねていないことに答えました。熱アイテムが欲しいですか?はい辞書キー?それでは、より多くのデータが到着したら、重複した項目を確認できますか?そうでない場合は、連想配列を必要とせず、通常の索引付けを行うだけです。これにより、どこからでも始めることができます。
BashはFP数学をまったく実行しないので、bash配列にデータを入れることは役に立ちません。 >.<
整数の索引付けが必要で、索引が負になることができない場合は、関連 (文字列索引) 配列ではなく索引配列を使用する必要があります。
ループを使用してwhile read
入力を2つの変数に解析し、それを使用して配列を設定します。
declare -a arr
# declare -A arr # associative
while read c1 c2 leftovers;do
arr[c1]=$c2;
done < file.txt
echo "arr[4] == ${arr[4]}"
実際には必要なく、declare -a
ただ使用しても構いません。また、「${#arr}」は配列のコレクション要素の数です。いいえ最後のインデックスでなければなりません。 (arr[-1]
最後の要素にアクセスするために使用されます。)は "${!arr[@]}"
インデックス(キー)のリストです。
もちろん、他のすべてもbash手動操作から来ています。