2017-03-05 5 views
0

私はgeoJSONファイルを持っており、サブフィールドに可能なすべての値を抽出したいと思います。だから、2つの項目の長いJSONのために、それはこのようになります:Python - JSONのフィールドの値をすべて取得する

data['features'][0]['properties']['cellId'] 
#returns 38 
data['features'][1]['properties']['cellId'] 
#returns 51 

私は[38, 51]を返すようにしたいと思います。出来ますか?私は

data['features'][0:]['properties']['cellId'] 

を試みたが、それは動作しません、TypeError: list indices must be integers or slices, not str

答えて

2

以来forループ使用します。あなたはこれらだけではなく個別に印刷を保存したい場合は

for element in data['features']: 
    print(element['properties']['cellId']) 

またはリストの内包表記を使用します:

cell_ids = [element['properties']['cellId'] for element in data['features']] 
print(cell_ids) 
# [38, 51] 
0

list comprehensionは、必要なデータを取得します。あなたの例ではその:申し訳ありませんが、ニシキヘビ/良いコードが答えではないだけrange(len(data))

+1

あなたは、むしろ反復のPythonの方法を使用する必要があり、data['features']を繰り返す、@DeepSpaceによって与えです:

[data['features'][i]['properties']['cellId'] for i in range(len(data))] 

を更新しました'range(len(..))'に比べて、 'data'の代わりに' data ['features'] 'を反復する必要があります。 – DeepSpace

+1

@DeepSpace、ご迷惑をおかけしていただきありがとうございます、私は私の回答を更新しており、あなたの投票には投票しました;-) – shizhz

関連する問題