質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2907閲覧

jsonファイルをPythonでValueソートしたい

b40ult

総合スコア1

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/29 17:30

前提・実現したいこと

jsonファイルのintではなく n + "人が視聴中" という文字列のValueをpythonを使ってソートしたいと思ってます。

ソートしたいjsonファイル

json

1[ 2 { 3 "title": "ふぉとな練習 あんない君", 4 "name": "蛇足", 5 "id": "dasoku_aniki", 6 "active": "1,844 人が視聴中", 7 "playing": "Fortnite" 8 }, 9 { 10 "title": "[DTN] エスケープフロム破産", 11 "name": "Killin9Hit", 12 "id": "killin9hit", 13 "active": "1,116 人が視聴中", 14 "playing": "Escape from Tarkov" 15 }, 16 { 17 "title": "【DETONATOR】カジュアル⇨中華統一", 18 "name": "yamatonjp", 19 "id": "yamatonjp", 20 "active": "636 人が視聴中", 21 "playing": "Dynasty Warriors 9: Empires" 22 } 23] 24

試したこと

python

1with open('test.json',encoding="utf-8") as f: 2 j = json.load(f) 3 j = sorted(j,key=lambda,x:x['active'])

このコードだと、何もソートされずに出力さえてしまいます。

色々試してみた所、手動で
"active": "1,116人が視聴中",
これを
"active": 1116 ,
のように修正すると上記のコードでソートされることが確認出来ました。
手を加えずにソートする他の方法はないでしょうか?よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

python

1import json 2 3with open('test.json',encoding="utf-8") as f: 4 j = json.load(f) 5 6j = sorted(j, key=lambda x: int(x['active'].replace(',', '').split('人')[0])) 7 8print(json.dumps(j, indent=2, ensure_ascii=False)) 9 10# 11[ 12 { 13 "title": "【DETONATOR】カジュアル⇨中華統一", 14 "name": "yamatonjp", 15 "id": "yamatonjp", 16 "active": "636 人が視聴中", 17 "playing": "Dynasty Warriors 9: Empires" 18 }, 19 { 20 "title": "[DTN] エスケープフロム破産", 21 "name": "Killin9Hit", 22 "id": "killin9hit", 23 "active": "1,116 人が視聴中", 24 "playing": "Escape from Tarkov" 25 }, 26 { 27 "title": "ふぉとな練習 あんない君", 28 "name": "蛇足", 29 "id": "dasoku_aniki", 30 "active": "1,844 人が視聴中", 31 "playing": "Fortnite" 32 } 33]

投稿2021/12/29 18:39

melian

総合スコア19865

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問