問題タブ [setdefault]
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 - ネストされた辞書に値を格納するキーエラーを回避する (Python)
序章
次の辞書には、3 つのレベルのキーと値があります。
追加する必要がある例。
問題文
必要なネストされたキーを作成し、キー エラーを回避するコードを作成したかったのです。
解決策 1
私が思いついた最初の解決策は次のとおりです。
正当に思えますが、これをコードの一部に順番に埋め込むと、気が遠くなります。私は他のソリューションについて Stackoverflow を調査し、get() および setdefault() 関数を読んでいました。
解決策 2
get() と setdefault() についてはたくさんの資料がありますが、ネストされた辞書についてはそれほど多くはありません。最終的に私は思いつくことができました:
これは 1 行のコードなので、実際に関数にする必要はありません。操作を含めるように簡単に変更可能:
完璧に見えますか?
質問
大量のエントリを追加し、多くの変更を行う場合、オプション 2 はオプション 1 より優れていますか? または、関数 1 を定義して呼び出す必要がありますか? 私が探している答えは、速度やエラーの可能性を考慮に入れる必要があります。
例
その他の背景
私は、非常に具体的な分析に役立つグラフ DB を作成するために Python を使用することを検討しているビジネス アナリストです。ディクショナリ構造は、1 つのノードが隣接するノードの 1 つに与える影響を説明するために使用されます。
- lv1 は Node From です
- lv2 は Node To
- lv3はイテレーション
- 値は影響力 (%)
最初の反復では、ノード 1 はノード 2 に直接影響を与えます。2 番目の反復では、ノード 1 は、ノード 2 が影響を与えているすべてのノードに影響を与えます。
私はそれに役立つパッケージ (networkx) を知っていますが、それらを使い始める前に Python/GraphDB を理解しようとしています。
python - setdefault と defaultdict のパフォーマンス
パフォーマンスが重要なアプリケーションのコードを書いています。なぜdefaultdict
それよりも速いように見えるのだろうかsetdefault
。
setdefault
主に、ネストされたの印刷出力が気に入らないため、を使用できるようにしたいと思いますdefaultdict
(以下の実装を参照)。
私のコードでelement_id
は、既に辞書のキーであるかどうかをテストする必要があります。
私がテストしている2つの機能は次のとおりです。
IPython の入出力:
なぜsetdefaultfunc
遅いのか。基になるコードは同じだと思いました。その速度を改善する方法はありますか?
ありがとう
python - Python を使用した CSV の解析
次の csv ファイルには、脆弱性のタイトル、脆弱性の重大度レベル、脆弱性の名前、脆弱性のレベル、およびその脆弱性を持つ IP アドレスを示すアセット IP アドレスの 3 つのフィールドがあります。その隣の列の重大度に脆弱性をリストし、その脆弱性を持つ IP アドレスの最後の列のリストを表示するレポートを印刷しようとしています。
脆弱性タイトル タブをキーとして使用し、脆弱性重大度レベルと呼ばれる 2 番目のタブを作成する csv ファイルを再作成したいと思います。最後のタブには、脆弱性を持つすべての IP アドレスが含まれます。
うまく説明できないので。単純化してみましょう
次のcsvがあるとしましょう
このcsvを次のように作成しようとしています:
どちらのソリューションも正しいです。ここに私の最終的なスクリプトもあります
ありがとうございました
php - MySQL SET DEFAULT がエラーを返す: クエリが空です
「ユーザー」と呼ばれる既存の MySQL (バージョン 5.6.12) テーブルがあり、php (バージョン 5.4.12) を介して列のデフォルトを設定しようとしています。たとえば、次のようになります。
ただし、これにより SQL エラーが生成されます (「クエリが空です」というメッセージが表示されます)。'username' は VARCHAR(200) タイプの列です。
デフォルト値に引用符付きリテラル ('John' など) を使用すると、同じエラーが発生します。(念のため、MySQL を使用していますが、SQL/MS Access または Oracle 構文に従ってクエリを変更しようとしましたが、それでも機能しません)。
私は何を間違っていますか?
編集:問題は解決しました。上記のクエリは問題なく、何も問題はありません。
$
私は信じられないほどばかげたエラーを犯し、 の前の記号を忘れていました$query
。つまり、私のコードは書かれていました$result = mysqli_query(query);
(ご存知のように、私は数十年の経験を持つプログラマーです。)
python - ネストされた辞書で setdefault()?
setdefult() を使用して、入れ子になったディクショナリの値を保留ファイルに格納しようとしています。これを行う簡単な方法はありますか?次のコードは、値を不変にしているようです。たとえば、最後の行では「価格」の値を 25 に変更できません。
shelve で機能させ、後で SQL を追加することを望んでいましたが、今それを学ぶ方が簡単かもしれません。どう考えているか教えてください。ありがとう。