問題タブ [namedtuple]

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.

0 投票する
3 に答える
3329 参照

python - namedtuple クラスでのカスタムソート

私はnamedtupleクラスをよく使います。私は今日、そのようなクラスにカスタムソートを実装する良い方法があるかどうかを考えていました。つまり、デフォルトのソートキーをnamedtupleの最初の要素(次に2番目、3番目など)ではなくします。

私の最初の本能は、実装__lt__して残り__eq__を任せるtotal_orderingことでした(le、ne、gt、geに記入します):

でも:

ああ、そうです...他のメソッドが欠落している場合にtotal_orderingのみ記入します。tuple/namedtuple にはそのようなメソッドがあるため、total_ordering は何もしていません。

だから私は私のオプションは

  1. namedtuple の使用をやめて、退屈なクラスを独自に作成し、total_ordering を使用し続けます
  2. namedtuple を使い続け、6 つの比較メソッドすべてを実装する
  3. namedtuple を使用し続け、ソート値を最初のフィールドとして挿入します。幸いなことに、クラスのインスタンスはそれほど多くありませんが、通常はフィールドの順序に依存してフィールドを初期化するだけなので、面倒な場合があります。たぶんそれは悪い習慣です。

これを解決するための最良の方法に関する提案はありますか?

0 投票する
2 に答える
2907 参照

python - Pythonでnamedtupleとして「引数リスト」を渡す

プログラムで渡したい情報のほとんどを保持する、Engine という名前のタプルを作成しました。このタプルの内部には、いくつかのパラメーターと、下流のメソッドによって使用される 2 つのインスタンス化されたクラスがあります。

download(engine)私は渡す関数を持っていますenginedownloadパス内のサブ関数engine- 一部は使用website、一部は使用browser、一部は使用、一部はs使用e

engineこれで、(プログラマーとしての) 認知オーバーヘッドが大幅に削減され、発生する可能性のある特定の変更の下流と上流の両方で引数リストが最新であることを確認する必要がなくなりました。メソッドで引数を使用しますengine.foo

一方で、これは「怠惰な」プログラミングのように感じます。すべてをエンジンの「クラス」にラップし、変数をクラスのメソッドとして持つだけで、すべてが簡単になりすぎているように思えます。さらに、この実装では見られないある種のオーバーヘッドがあったことを誓います。これには何らかの前例がありますか?無視するには便利すぎると感じているからです。

渡される引数の数を減らすために、プログラム全体で引数の代わりにnamedtuplesを使用する必要がありますか?

0 投票する
2 に答える
1283 参照

python - サブクラス化された名前付きタプルのインスタンスを初期化できません

namedtuple からサブクラス化されたクラスを定義する方法を理解していないと思います:

このコードはTypeError : __new__() takes exactly 4 arguments (2 given).

理由はありますか?

0 投票する
2 に答える
104 参照

python - namedtuples を使用して実行中のコードを移行する

名前付きタプルを使用してサーバー上でコードを実行しています。

サーバーは、キューから出てくる他のサーバーからイベントを取得しています。

namedtuple に新しい属性を必要とする新しい機能をコードに追加したいと考えています。これを行い、下位互換性を維持する良い方法はありますか? つまり、サーバーを停止して起動し、コードを次のように変更できます。

ただし、それまでの間、古い署名がキューに入れられたイベントがあります。

誰もこれを以前にやったことがありますか?

0 投票する
1 に答える
298 参照

python - Pythonはテキストファイルから名前のみを出力します

名前だけを印刷することはできません。
これは私がこれまでに得たもの
であり、ここにmalenames.txtのリンクがあります:

http://www.ics.uci.edu/~kay/malenames.txt

0 投票する
1 に答える
1373 参照

python - Python:Lambdaはnamedtupleオブジェクトとして機能しますか?

私はかなり典型的なクラスを持っているプログラムを書きました。このクラスでは、複数のnamedtupleオブジェクトを作成します。名前付きタプルオブジェクトは多くのアイテムを保持しますが、バインドしようとするラムダ関数を除いて、すべて正常に機能します。以下は、簡略化された例と私が受け取っているエラーメッセージです。なぜこれがうまくいかないのか誰かが知っていることを願っています。前もって感謝します!

ファイル:test.py

ファイル:equations.py

エラー:

0 投票する
2 に答える
2247 参照

python - Pythonでキーによってアクセスされる固定キーキー:値データセットを保存する最良の方法は?

私が欲しいのは、キーの固定セットを持つデータのセットを処理できるようにすることです。すべてのキーは文字列です。データは編集されません。これは、次のような通常の辞書で実行できることを知っています。

次のように呼び出せる必要があります。

ただし、これはメモリの浪費のようです (辞書はキーを複数回保存するだけでなく、明らかに 1/3 を空のままにしておくため)、同じキーを入力し続ける必要があるため、作成するのも面倒です。私のコードで何度も何度も。また、データセット内の何かを誤って変更する危険もあります。

私の現在の解決策は、最初にキーのセットをタプルに格納してから、データもタプルとして格納することです。次のようになります。

データを取得するには、次のようにします。

次に、namedtuples と呼ばれる、必要なことを実行できるように見えるこのことについて学びました。

ただし、キーで値を単純に呼び出すことはできないようです。代わりに、キーでデータを取得するには、getattr を使用する必要がありますが、これはあまり直感的ではないようです。

私の基準は、まずメモリ効率、次にパフォーマンス効率です。これらの 3 つの方法のうち、どの方法が最適でしょうか? それとも、何かが足りないので、欲しいものを手に入れるためのよりPython的なイディオムがありますか?

EDIT:最近、の存在についても学びました。これは__slots__、キーと値のペアに対してより効率的に実行され、同じ(?)量のメモリをほとんど消費しているようです。これと同様に動作する実装は、namedtuples の適切な代替になるでしょうか?

0 投票する
1 に答える
1696 参照

python - Pythonのnamedtupleスライス

これが私の最初の質問です...

以下のような名前付きのタプルがある場合

そして私は以下のようなnamedtupleのコレクションを持つ配列を持っています

Sの配列スライスを取得するにはどうすればよいですか?

これはエラーでは機能しません:AttributeError:'list'オブジェクトには属性'S'がありません...

任意の提案をいただければ幸いです。ありがとう。

0 投票する
1 に答える
5404 参照

python - Pythonは、リストに格納されている名前付きタプルのデータを編集する方法を教えてください。

質問

PicDataの値を編集する方法は?

0 投票する
1 に答える
71 参照

python - Python 構造体配列の日時が異なる

Capturing Value 内の DeviceInfoList 配列が TRUE であると同時に、Datetime が datetime.now と異なる場合は 5 秒を超えています。次に、trueを印刷します。これを行う方法は?

p/s: キャプチャが TRUE で、datetime が 5 秒を超えている場合、同じ配列インデックスである必要があります。