2016-07-13 27 views
-1

私はJSONオブジェクトのリストのキーでグループ化する必要があるPythonスクリプトを作成しています。Pythonでjsonオブジェクトのリストの操作でグループを操作する方法は?

私は次の形式でPythonでJSONオブジェクトの多数のリストをしました:

[{ '名前':XYZ、 '領土':ABC、 'parameter_a':1、 「parameter_b」:2、 「parameter_c」:3}、 ...]

今私は(parameter_dを言う)タグを作成することにより、グループ化された内の数字は回数の具体的な領土を(カウント言うべき「abc」と言う)は、jsonオブジェクトのリスト全体で発生しています。 など。 Territory abcはリスト内で3回発生するので、parameter_dには、領域abcが発生した異なるインスタンスの1,2,3の値を保持します。 ご協力いただきありがとうございます。

セットアップのためのロブの答えのこの部分を使用して
+0

あなたの例の文字列はどちらもJSONでありますPythonもありません。将来、正しい例を提供してください。 –

+0

助けてくれてありがとうRob。それは私の理解からjsonオブジェクトのpythonリストです。 –

答えて

0
from json import loads, dumps 
from collections import defaultdict 

json_string = """ 
[ 
    {"name": "xyz", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}, 
    {"name": "qrs", "territory": "def", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}, 
    {"name": "tuv", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}, 
    {"name": "abc", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3} 
]""" 

# Step 1: convert from JSON to Python: 
python_object = loads(json_string) 

# Step 2: Add `parameter_d` to each item in list, 
# using defaultdict(int) as a counter: 
counts = defaultdict(int) 
for item in python_object: 
    counts[item["territory"]] += 1 
    item["parameter_d"] = counts[item["territory"]] 

# Step 3: convert from Python to JSON 
json_string = dumps(python_object, indent=2) 
print json_string 
0

from json import loads, dumps 
from collectins import defaultdict 

json_string = """ 
[ 
    {"name": "xyz", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}, 
    {"name": "qrs", "territory": "def", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}, 
    {"name": "tuv", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}, 
    {"name": "abc", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3} 
]""" 

# Step 1: convert from JSON to Python: 
python_object = loads(json_string) 

あなたは地域の辞書を作成し、あなたのオブジェクトを更新できます。

territories = defaultdict(list) 

for i, item in enumerate(python_object): 
    territories[item['territory']].append(i) 

for item in python_object: 
    item['parameter_d'] = territories[item['territory']] 

print(dumps(python_object, indent=2)) 
関連する問題