Pythonのjsonモジュール、int辞書キーを文字列に変換します

Charles Ritchie:

以下を実行すると、Pythonのjsonモジュール(2.6以降に含まれる)がint辞書のキーを文字列に変換することがわかりました。

>>> import json
>>> releases = {1: "foo-v0.1"}
>>> json.dumps(releases)
'{"1": "foo-v0.1"}'

ダンプとロード時に文字列を解析する必要なく、キーをintとして保存する簡単な方法はありますか?jsonモジュールが提供するフックを使用することは可能だと思いますが、やはりこれには解析が必要です。私が見落とした議論があるのでしょうか?乾杯、チャズ

サブ質問:回答ありがとうございます。jsonが私が恐れていたように機能するのを見て、おそらくダンプの出力を解析してキーのタイプを伝える簡単な方法はありますか?また、ダンプを実行するコードと、サーバーからjsonオブジェクトをダウンロードしてロードするコードは、どちらも私が作成したものです。

ジム・デニス:

これは、さまざまなマッピングコレクションの微妙な違いの1つです。JSONはキーを文字列として扱います。Pythonは、タイプのみが異なる個別のキーをサポートしています。

Python(および明らかにLua)では、マッピング(それぞれ辞書またはテーブル)へのキーはオブジェクト参照です。Pythonでは、それらは不変の型であるか、__hash__メソッドを実装するオブジェクトである必要があります(Luaのドキュメントでは、可変オブジェクトの場合でもハッシュ/キーとしてオブジェクトのIDを自動的に使用し、同等の文字列が確実に同じオブジェクトにマッピングされるように文字列インターンに依存することを推奨しています)。

Perl、Javascript、awk、およびその他の多くの言語では、ハッシュ、連想配列、または指定された言語で呼び出されるもののキーは、文字列(またはPerlでは「スカラー」)です。perlに$foo{1}, $foo{1.0}, and $foo{"1"}はすべて同じマッピングへの参照があります%foo---キーはスカラーとして評価されます!

JSONは、Javascriptシリアル化テクノロジとして始まりました。(JSONの略J AVA S CRIPT O bject Nの otation。)当然のことながら、そのマッピングの意味と一致するそのマッピング表記のためのセマンティクスを実装します。

シリアライゼーションの両端がPythonになる場合は、ピクルスを使用したほうがよいでしょう。これらをJSONからネイティブPythonオブジェクトに変換する必要がある場合は、いくつかの選択肢があると思います。まず、(try: ... except: ...)を試して、辞書の検索に失敗した場合に任意のキーを数値に変換できます。あるいは、もう一方の端(このJSONデータのシリアライザーまたはジェネレーター)にコードを追加すると、各キー値に対してJSONシリアル化を実行させることができます-キーのリストとしてそれらを提供します。(その後、Pythonコードは最初にキーのリストを反復処理し、それらをネイティブのPythonオブジェクトにインスタンス化/逆シリアル化します...次に、それらを使用してマッピングから値にアクセスします)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

辞書のjsonモジュールを使用して文字列データを整数に変換する方法は?

分類Dev

辞書で文字列キーをintに変換します

分類Dev

辞書のキーを文字列に変換します

分類Dev

文字列をPythonで特定の辞書のキーに変換します

分類Dev

ブールキーと値のペアを使用して文字列を辞書形式に変換します

分類Dev

テキストファイルをキー文字列と値の整数の辞書に変換します

分類Dev

文字列をマルチレベルの辞書キーに変換しますか?

分類Dev

DataFrameの列を辞書キーに変換します

分類Dev

別のモジュールから辞書pythonにすべての変数をインポートします

分類Dev

Swift 3:文字列型の辞書をIntに変換します

分類Dev

Python辞書キーペアを文字列に変換する

分類Dev

モジュール名を文字列に変換し、モジュールに戻します

分類Dev

辞書を理解して、辞書内のすべてのキーを小文字に変換します

分類Dev

エスケープなしのシェルを使用してJSON文字列を辞書に変換する

分類Dev

ネストされた辞書のキーを大文字に変換します

分類Dev

nd配列をキー、値辞書に変換します

分類Dev

辞書を文字列に変換し、各キーと値のペアをコマで区切ります

分類Dev

辞書をURLパラメータの文字列に変換しますか?

分類Dev

Beautifulsoupは文字列をbs4.elementモジュールのResultSetオブジェクトに変換します

分類Dev

Rのハッシュテーブル/辞書を使用して、キー列を値に置き換えます

分類Dev

Info.plistキーを辞書の配列に変換します

分類Dev

文字列「名前」を辞書のキータイプに変換できませんでした-文字列からキータイプオブジェクトに変換するTypeConverterを作成します

分類Dev

辞書の2タプルキーを変換し、新しい辞書に辞書値として追加する

分類Dev

Python-辞書とキー値のリストを文字列に変換

分類Dev

「\」を含むjson文字列をC#の辞書に変換します

分類Dev

Pythonでキーを辞書からintに変換する

分類Dev

文字列を辞書のキー値に変換する-分割の問題

分類Dev

辞書を文字列pythonに変換します

分類Dev

キーからキーへのマッピングに従ってPython辞書キーを変換します

Related 関連記事

  1. 1

    辞書のjsonモジュールを使用して文字列データを整数に変換する方法は?

  2. 2

    辞書で文字列キーをintに変換します

  3. 3

    辞書のキーを文字列に変換します

  4. 4

    文字列をPythonで特定の辞書のキーに変換します

  5. 5

    ブールキーと値のペアを使用して文字列を辞書形式に変換します

  6. 6

    テキストファイルをキー文字列と値の整数の辞書に変換します

  7. 7

    文字列をマルチレベルの辞書キーに変換しますか?

  8. 8

    DataFrameの列を辞書キーに変換します

  9. 9

    別のモジュールから辞書pythonにすべての変数をインポートします

  10. 10

    Swift 3:文字列型の辞書をIntに変換します

  11. 11

    Python辞書キーペアを文字列に変換する

  12. 12

    モジュール名を文字列に変換し、モジュールに戻します

  13. 13

    辞書を理解して、辞書内のすべてのキーを小文字に変換します

  14. 14

    エスケープなしのシェルを使用してJSON文字列を辞書に変換する

  15. 15

    ネストされた辞書のキーを大文字に変換します

  16. 16

    nd配列をキー、値辞書に変換します

  17. 17

    辞書を文字列に変換し、各キーと値のペアをコマで区切ります

  18. 18

    辞書をURLパラメータの文字列に変換しますか?

  19. 19

    Beautifulsoupは文字列をbs4.elementモジュールのResultSetオブジェクトに変換します

  20. 20

    Rのハッシュテーブル/辞書を使用して、キー列を値に置き換えます

  21. 21

    Info.plistキーを辞書の配列に変換します

  22. 22

    文字列「名前」を辞書のキータイプに変換できませんでした-文字列からキータイプオブジェクトに変換するTypeConverterを作成します

  23. 23

    辞書の2タプルキーを変換し、新しい辞書に辞書値として追加する

  24. 24

    Python-辞書とキー値のリストを文字列に変換

  25. 25

    「\」を含むjson文字列をC#の辞書に変換します

  26. 26

    Pythonでキーを辞書からintに変換する

  27. 27

    文字列を辞書のキー値に変換する-分割の問題

  28. 28

    辞書を文字列pythonに変換します

  29. 29

    キーからキーへのマッピングに従ってPython辞書キーを変換します

ホットタグ

アーカイブ