問題タブ [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.
python - Python がレコード タイプをサポートしないのはなぜですか? (つまり、変更可能な名前付きタプル)
Python がレコード型をネイティブにサポートしていないのはなぜですか? これは、namedtuple の変更可能なバージョンを持つことの問題です。
使えnamedtuple._replace
ました。しかし、これらのレコードをコレクションにnamedtuple._replace
含める必要があり、別のインスタンスを作成するため、コレクションを変更する必要があり、すぐに面倒になります。
背景: TCP/IP を介してポーリングして属性を取得する必要があるデバイスがあります。つまり、その表現は変更可能なオブジェクトです。
編集: ポーリングする必要がある一連のデバイスがあります。
編集: PyQt を使用して属性を表示するオブジェクトを反復処理する必要があります。__getitem__
やのような特別なメソッドを追加できることは__iter__
わかっていますが、もっと簡単な方法があるかどうか知りたいです。
編集:属性が固定されているタイプ(デバイスにあるのと同じように)を好むが、変更可能です。
python - Pythonのnamedtupleをjsonにシリアル化する
namedtuple
フィールド名を保持したままaをjsonにシリアル化するための推奨される方法は何ですか?
anamedtuple
をjsonにシリアル化すると、値のみがシリアル化され、フィールド名が変換で失われます。json化したときにフィールドも保持したいので、次のようにしました。
上記は、期待どおりにjsonにシリアル化されnamedtuple
、反復中の非タプルのような結果(私のユースケースでは問題ありません)を除いて、私が使用する他の場所(属性アクセスなど)と同じように動作します。
フィールド名を保持したままjsonに変換する「正しい方法」とは何ですか?
python - namedtuple から値の名前を取得する
コレクションを持つモジュールがあります:
別のモジュールでは、このコレクションを繰り返し処理し、アイテムの名前を取得したいと考えています。
x
したがって、上記のコードでは、(オブジェクトである) の代わりに、たとえばDepartureTimeASC
orを渡したいと考えていますArrivalTimeASC
。
どうすればこの名前を取得できますか?
python - 名前付きタプルのPythonアンパック2次元リスト
名前付きタプルの 2 次元リストがあり (各タプルに N 個の値があるとしましょう)、それらを N 個の異なる 2 次元リストにアンパックしたいと考えています。ここで、アンパックされた各 2-D リストは、完全に 1 つの属性から構成されています。オリジナルリスト。たとえば、次の 2 次元リストがあるとします。
3つの結果を次のようにしたいと思います。
タプルの 1 次元リストがある場合はzip(*mylist)
、次のように使用します。
そして、ネストするだけでこれを私の状況に拡張できます。
しかし、これでは私が望んでいたリストが得られず、ネストされたアンパックzip(*)
関数はそれほど読みにくくなっています。よりPythonicなソリューションのアイデアはありますか? 最終結果のどこかでタプルの属性の名前を操作できればボーナスポイントです。
実際、考えてみると、次のように、タプル属性の名前をそれぞれのマトリックスにマップする dict があれば理想的です。
python - NumPyの名前付きタプルに相当しますか?
次のように要素にアクセスできるという意味で、collections.namedtuple と非常によく似た動作をする NumPy オブジェクトを作成することは可能ですか。
複雑なデータ型を使用しようとしました:
これにより、namedtuple 型のような 0 次元の値が作成されます。それはほとんど動作します:
ただし、「配列」は 0 次元であるため、要素へのアクセスは機能しません。
上記の目的の動作 (文字列とインデックスの両方によるアイテムの割り当て) を NumPy オブジェクトで取得する方法はありますか?
python - 名前付きタプルの出力
Python 2.7.1 では、名前付きタプルを作成できます。
私はそれを移入することができます:
そして、次のように印刷できます。
テスト (これ = 1、それ = 2)
しかし、なぜこのように印刷できないのですか?
TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません
編集: Pythonで文字列フォーマットを使用 した印刷タプルを見ることを知っていたはずです
python - SQLalchemy で namedtuple を使用することは可能ですか?
SQLalchemy で動作するように namedtuple を取得しようとしましたが、役に立ちませんでした.. Web 検索はあまり明るくなく、Python と SQLalchemy は初めてなので、風車を追いかけているかどうかはよくわかりません。 (基本的な考え方は、namedtuple があるということです。つまり、
私が正しければ、基本的にクラス Point(tuple) を作成します。これは最初は問題なく動作し、次のようなオブジェクトを作成できます。
しかし、エンジンなどを作成して mapper を呼び出した後、このエラーが発生せずにこれ以上オブジェクトを作成することはできません:
なぜそれが起こるのか?namedtuple を sqlalchemy で動作させる方法を知っている人はいますか? もちろん、独自の Point クラスを定義することもできますが、namedtuple を機能させることに夢中になっています。Python 2.7、SQLalchemy 0.6.6 (sqlite エンジン) を使用しています。
例:
私はこのようなことを試みています:
主なアイデアは、データベースに簡単に保存できる名前付きのコレクションが必要だということです。したがって、この:
sqlalchemy では動作しません (と思います)。Bunch クラスを作成できますが、コレクションに格納する int の数を事前に知りません。データベースを作成する前に設定します。私が理にかなっていることを願っています..
python - 実行時にクラスを作成するときに「type()」よりも「exec」を使用する利点は何ですか?
Pythonで実行時にクラスを動的に作成したい。
たとえば、次のコードを複製します。
...しかし、Foo1、Foo2、Foo クラスを動的に作成したい (つまり、最初のパスのコンパイルではなく実行中に)。
これを実現する 1 つの方法は、次type()
のように を使用することです。
exec
次のように、でそれを達成することもできます。
の使用はexec
私にはうまくいきません(この質問を読んだ多くの人にはそうではないと思います)が、exec
まさにpythonのcollections.namedtuple()
クラスがどのように実装されているかです(この行を参照)。また、クラスの作成者 (Raymond Hettinger) による、exec
hereの使用に対する弁護も非常に関連性があります。この弁護では、「名前付きタプルの重要な機能は、手書きのクラスとまったく同等である」と述べtype()
られていexec
ます。
違いはありますか?exec
vsをtype()
使用する理由
答えは、両方の方法が同じであり、namedtuple
実装に多くの名前付きタプル変数が散りばめられているだけであり、すべてのメソッドのクロージャーを動的に生成してこれを行うと、コードが扱いにくくなる可能性があると思いますが、知りたいですこれにさらに何かがある場合。
に対する私の不快感についてはexec
、信頼できない関係者が悪意のあるコードを挿入する方法がまったくない場合は、それで問題ないことを認識しています...それが私を緊張させるだけです.
python - 名前付きタプルでタイプ名に「_」を使用すると、何か特別なことはありますか?
_
で for typename を使用するコードを見ていますnamedtuple
。これは何を目的としているのだろうと思いました。
なぜ使用しないのString
ですか?
javascript - Pythonのnamedtupleをjavascriptで実装する方法
Pythonのnamedtupleをjavascriptに実装するにはどうすればよいですか?理想的には、シーケンスのシーケンスに「マッピング」して、名前付きのタプルのようなオブジェクトのシーケンスに変換できる関数も必要です。
毎回「Point」のような新しいクラスをコーディングする必要はありませんが、代わりに、指定されたフィールド名でリストアイテムへのアクセスをサポートする新しいクラスを生成するファクトリ関数が必要です。
補足:この質問の根底にある仮定は、JavaScriptマップがリストするメモリの使用量が少ないということです。その仮定は合理的ですか?