実現したいこと
ループ分で書かれた処理をリスト内包表記で書き直そうとしていますが苦戦しています。
変更前データ
[ { "id": "い", "fruits": "apple", "cd_1": [1,1], "cd_2": ["あ","あ"] }, { "id": "い", "fruits": "apple", "cd_1": [2,3,4], "cd_2": ["い","う","え"] }, { "id": "い", "fruits": "apple", "cd_1": [None], "cd_2": [None] }, { "id": "ろ", "fruits": "banana", "cd_1": [5,6], "cd_2": ["お","か"] }, { "id": "は", "fruits": "grape", "cd_1": [None], "cd_2": [None] }, { "id": "は", "fruits": "grape", "cd_1": [6,9], "cd_2": ["か","け"] }, { "id": "は", "fruits": "grape", "cd_1": [7,8], "cd_2": ["き","く"] }, ]
変更後データ
[ { "id": "い", "fruits": "apple", "cd_1": [1,1], "cd_2": ["あ","あ"] }, { "id": "い", "fruits": "apple", "cd_1": [2,3,4], "cd_2": ["い","う","え"] }, { "id": "い", "fruits": "apple", "cd_1": None, "cd_2": None }, { "id": "ろ", "fruits": "banana", "cd_1": [5,6], "cd_2": ["お","か"] }, { "id": "は", "fruits": "grape", "cd_1": None, "cd_2": None }, { "id": "は", "fruits": "grape", "cd_1": [6,9], "cd_2": ["か","け"] }, { "id": "は", "fruits": "grape", "cd_1": [7,8], "cd_2": ["き","く"] }, ]
前提
cd_1 と cd_2 の値が [None] となっている場合に None に置換したいです。cd_1 が [None] ならば cd_2 も [None] になります。
試したこと
作成したコード
data=[ { "id": "い", "fruits": "apple", "cd_1": [1,1], "cd_2": ["あ","あ"] }, { "id": "い", "fruits": "apple", "cd_1": [2,3,4], "cd_2": ["い","う","え"] }, { "id": "い", "fruits": "apple", "cd_1": [None], "cd_2": [None] }, { "id": "ろ", "fruits": "banana", "cd_1": [5,6], "cd_2": ["お","か"] }, { "id": "は", "fruits": "grape", "cd_1": [None], "cd_2": [None] }, { "id": "は", "fruits": "grape", "cd_1": [6,9], "cd_2": ["か","け"] }, { "id": "は", "fruits": "grape", "cd_1": [7,8], "cd_2": ["き","く"] }, ] for item in data: if item['cd_1'] == [None]: item['cd_1'] = None item['cd_2'] = None
最後のfor文をリスト内包表記で書く場合の書き方を知りたいです。
new_data = [(ここがわかりません) if item['cd_1']==[None] else item for item in data]

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/05 09:58