22

Python でクリーンアップしている JSON 配列があります。imageDataプロパティを削除したい:

data.json

[{"title": "foo", "imageData": "xyz123"},
{"title": "bar", "imageData": "abc123"},
{"title": "baz", "imageData": "def456"}]

プロパティを削除するためにリスト内包表記を設定していますが、に焦点を当てた変数を作成する方法がわかりませんimageData:

import json

with open('data.json') as json_data:
    data = json.load(json_data)
    clean_data = [ item for item in data if not item['imageData'] ]
    # Write `clean_data` to new json file

リスト内包表記の場合print、空の配列が返されます。これを正しく機能させるには、何を修正する必要がありますか?

4

4 に答える 4

38

問題の簡単な解決策は、不要なキーをその場で削除することですdel

import json

with open('data.json') as json_data:
    data = json.load(json_data)
    for element in data: 
        del element['imageData'] 

いくつかの安全チェックを追加する必要がありますが、アイデアはわかります。

于 2013-10-03T19:24:50.677 に答える
2
[ item for item in data if not item['imageData'] ]

すべて持っているので空ですimageData削除するのではなく、テストしているだけです。

それぞれをループしdateます。del item['imageData']item

于 2013-10-03T19:24:43.880 に答える
1

どうですか:
clean_data = [k:v for k,v in data.iteritems() if k != 'imageData']

または、辞書が必要な場合は、辞書式/内包表記:
clean_data = {k:v for k,v in data.iteritems() if k != 'imageData'}

于 2013-10-03T20:28:27.827 に答える