[過去ログ] くだらねえ質問はここに書き込め! Part 245 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
908(1): 2021/11/05(金)01:04 ID:Hv83GQpJ(2/3) AAS
>>906-907
うぅ・・番号とかつけてソートして表示とかできるのでしょうか?
909(1): 2021/11/05(金)01:11 ID:8WbDk17q(2/2) AAS
>>908
根本的に使い方が間違ってる。シェルスクリプトで連想配列なんて使わない
名前とIDを順番に出したいなら
123 TAKANA
456 SATOU
789 SUZUKI
234 TAKOYAKI
とかいうテキストをループで回してreadすればいいだろ
910(1): 2021/11/05(金)01:39 ID:mj6QDLOv(1) AAS
連想配列のキーを普通の配列に入れればよろしいのじゃないかしら
declare -A names=(
["TANAKA"]="123"
["SATO"]="456"
["SUZUKI"]="789"
["TAKAHASHI"]="234"
)
declare -a ni=(
"TANAKA"
"SATO"
省6
911(1): 2021/11/05(金)15:19 ID:Hv83GQpJ(3/3) AAS
>>909-910
ありがとうございます。
910さんのやり方なら理解できました。
連想配列のループって前からではないけど、毎回同じ出方になるけど、何か法則とかあるのかな
逆に配列は前から順番に出るのに不思議ですね
912: 2021/11/05(金)15:27 ID:qs6OKevZ(1/3) AAS
定数なら必要ないし外部入力なら並べてから読めばいいしシチュエーションが理解できんよな
使い方間違ってるとしか思えん
913(1): 2021/11/05(金)15:28 ID:qs6OKevZ(2/3) AAS
不思議でも何でもないのでハッシュテーブルとかの実装を見てみればいい
914(1): 2021/11/05(金)18:07 ID:E3qHNRII(1) AAS
ここにはほんものの初心者質問なんかねーじゃん!
915: 2021/11/05(金)19:20 ID:cJdbB2O/(1/2) AAS
>>913
連想配列はハッシュをつかってアクセスする配列であるって基礎的常識だけど、
でも、この板に来る連中は俺を含めて情報工学的の知識ないど素人がほとんどだからな。
普通のLinuxユーザーなら大学の情報工学科卒ぐらいの知識あるんだろうが。
まぁ、俺ら(この板連中は)ってど文系の連中がほとんどで使い方には必死するが、
どのようにして実現している(実装されている)かと言うようなことにも必死する理系野郎ではないからな
916: 2021/11/05(金)19:25 ID:SGqxn/Ov(1/3) AAS
>>914
>>882
私にも答えられる質問ありがとうございます
917: 2021/11/05(金)21:13 ID:YOmWv/Lx(1/2) AAS
>>876
お前が普通だと思う鳥とインストール手順を書け
918: 2021/11/05(金)21:21 ID:YOmWv/Lx(2/2) AAS
>>911
近所に田中、佐藤、鈴木、高橋が住んでるとして、順番に並べてみろ。
919(1): 2021/11/05(金)21:52 ID:bRi9tMfO(1/2) AAS
配列のインデックスを要素のハッシュで持つ、というのが連想配列即ちハッシュテーブルだから
普通(特殊な実装をしていない限り)は順序は保持されない
920(1): 2021/11/05(金)22:39 ID:SGqxn/Ov(2/3) AAS
>>919
特殊なんだろうけど、phpとか、Rubyとかは、順序保持してくれるんだよね
Qtで、Key使いたくて、QHashで書き始めて
順序がおかしいって、なって
あ
ダメだったんんだった
って
構造体作ってListになおすとかしょっちゅう
921(2): 2021/11/05(金)22:44 ID:bRi9tMfO(2/2) AAS
>>920
動かしてみると順序保持されてる言語結構あるけど
言語仕様で保証されてないなら「今現在そう動く」としても危険な実装だからやめといた方がいいよ
実行環境で変わったりバージョンで変わったりする
922(1): 2021/11/05(金)22:56 ID:SGqxn/Ov(3/3) AAS
>>921
Rubyは詳しく知らないけど
phpは、そもそも、hashがなくて、全部配列だから、普通じゃないんだよ
$hash = array('a' => 1, 'b' => 2, 'c' => 3)
こんなんだし
923: 2021/11/05(金)23:44 ID:qs6OKevZ(3/3) AAS
ハッシュならリンクで繋いでるだけだから…
そんなのはMap(連想配列)の実装構造によるもので、どこまで順序保証するかも言語やライブラリの仕様による
単に連想配列の列挙で順序が保証されないことは不思議なことではないというだけ
phpはコンテナとして連想配列しか用意されてないだけ
924: 2021/11/05(金)23:58 ID:cJdbB2O/(2/2) AAS
>>921
pythonの昔バージョンは順序を保持しなかったが、
比較的新しいのは保持するようになっているからな。
bashのような古典スクリプトは昔ながらの順序を保持ない連想配列のままなんだろう
925: 2021/11/06(土)01:41 ID:YFQx6gi4(1) AAS
Rubyでは、Hashの要素数が増えていくと、再編成される
バケット数は、2の累乗付近の素数を使う。
つまり、倍々に増やしていく
8+3, 16+3, 32+5, 64+3, 128+3, 256+27, 512+9...
1つのバケットには、平均して5つの要素を入れる(衝突)。
11*5=55, 19*5=95, 37*5=185...
つまり要素数が、56, 96, 186...個になると、
バケット数を増やして、再編成する
普段、1万個の要素を追加するのに、8msかかるが、
再編成するタイミングでは、20msかかる。
省10
926(1): 2021/11/06(土)09:21 ID:9fuQqkoH(1) AAS
>>922
> phpは、そもそも、hashがなくて、全部配列だから、普通じゃないんだよ
確かに普通じゃないわ…
$array[3] = 'あ';
$array[2] = 'い';
$array[1] = 'う';
$array[0] = 'え';
foreach($array as $key => $value){
print $key . ":" . $value . <br />";
}
省5
927: 2021/11/06(土)10:18 ID:Au2x2mqq(1/15) AAS
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>for k,v in {3:'あ',2:'い',1:'う',0:'え'}.items():
... print(f'{k}:{v}')
...
3:あ
2:い
1:う
0:え
省2
上下前次1-新書関写板覧索設栞歴
あと 75 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s