問題タブ [autovivification]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - タプルを使用して深くネストされた辞書にアクセスするにはどうすればよいですか?
タプルによる辞書アクセスを許可するために、 noskloから の以前の回答で与えられた自動有効化の例を拡張したいと思います。
nosklo のソリューションは次のようになります。
テスト:
出力:
添え字の任意のタプルを指定してノードを設定したい場合があります。タプルの深さが何層になるかわからない場合、適切なノードを設定する方法をどのように設計すればよいでしょうか?
おそらく、次のような構文を使用できると考えています。
しかし、機能する実装を思い付くのに苦労しています。
アップデート
@JCashの回答に基づいた完全に機能する例があります:
拡張スライス表記を使用して、上記と同じ出力を実現できます。
perl - 不思議な鍵はPerl5.14ハッシュテーブルのどこからともなく出てきます
コードでハッシュテーブルを使用しています
プログラムをデバッグするためのprintステートメントを作成しました。挿入したことがないにもかかわらず、ハッシュテーブル "%stat"に不思議なキー値が表示されていることがわかりました。$ stat {510}を挿入したことがないにもかかわらず、どういうわけか存在するとしますが、その値(私の場合はハッシュテーブル参照)は初期化されていません。私はステートメントを書かなければなりません:
不要なキーを削除します。
(keys%stat)から不思議な鍵が現れる理由を教えてください。
ありがとう、ジェフ
php - 通知をスローせずに空の配列インデックスを事前にインクリメントするにはどうすればよいですか?
私はこれをしたい:
$matched_tags[$tag]++
ループ中に特定の $tag が見つかった回数を追跡する簡単な方法として。
これは、インデックスが定義されていないため、新しい $tag が初めて検出されたときに NOTICE をスローしているように見えます。PHP は親切にもそれを自動有効化し、0 に設定してポストインクリメントしますが、とにかく NOTICE をスローします。
現在、ベストプラクティスとして通知をオンにして開発するのが好きなので、通知を抑制したくありません。しかし、私がしていることは注目に値するものではありません。
私は本当にしなければならないのですか?
ああ、それはとても痛いです。もっとエレガントな方法があることを教えてください。そうしないと、Perl に切り替えることを誓いますので、助けてください。
perl - @INC で autovivification.pm が見つかりません
Perl スクリプトを実行すると、次のエラーが表示されます。
「@INC で autovivification.pm が見つかりません」
このモジュールをシステムにインストールするにはどうすればよいですか?
python - Pythonのdefaultdictに相当するRubyは何ですか?
Python では、各要素が最初に参照されたときにデフォルト値を持つハッシュを作成できます (「autovivification」とも呼ばれます)。次に例を示します。
dict を印刷すると、「new_key」の値が 1 であることが示されます。
Rubyで同等のものは何ですか? このコードはエラーをスローします:
python - 辞書を定義どおりに印刷する方法
次のコードがあります。
私のautovivificationは次のとおりです(から取得:入れ子になった辞書を実装する最良の方法は何ですか?):
次のように出力します。
順序が変更されていることに注意してください。現在はアルファベット順です。これが起こらないようにする方法はありますか?申し訳ありませんが、十分に明確ではありませんでした:(キーを変更せずに、「任意に辞書を非常に簡単に拡張する」というautovivificationのプロパティを使用します)