まず、JSONデータのフォーマットを変更する必要があります。ここにはエラーが含まれています。
質問に答えるために、以下のようにJSONファイルをフォーマットしました。
{
"logs" : [ {
"other" : "xVKNXCVNsk",
"time" : "2017-06-15T01:31:50.412Z",
"other2" : "xVKxXCbNsk",
"name" : "Alpha Beta: Bingo"
}, {
"other" : "xVKxXCbNsk",
"time" : "2017-06-15T01:31:37.229Z",
"other2" : "xVKxXCbNsk",
"name" : "Terra Zaba: Bingo"
}, {
"other" : "xVKxXCbNsk",
"time" : "2017-06-1T01:31:37.229Z",
"other2" : "xVKxXCbNsk",
"name" : "Terra Zaba: Bingo"
}]
}
JSONファイルをフォーマットした後、私はその質問に答えることができます。私は、質問を見つけたあなた自身のために判断する必要があるコードを書くとき
import json
from pprint import pprint
PATH = r"E:\temp\temp.json"
def parse_func(f):
"""
parse the JSON file
:param f: the parsed file path
:return: the result dict
"""
parse_Dict = dict()
parse_List = list()
num_Dict = dict()
# load the JSON data to `data `
with open(f) as data_file:
data = json.load(data_file)
# parse the "name " and the "time "
for i in range(0, len(data["logs"])):
parse_List.append(data["logs"][i]["name"])
parse_List.append(data["logs"][i]["time"].split("T")[0])
print(parse_List)
# change the list to the dict
for ii in range(0, len(parse_List), 2):
# the "name " and the "time "
parse_Dict[parse_List[ii]] = parse_List[ii + 1]
# the "name " and the "retry number "
if parse_List[ii] not in num_Dict:
num_Dict[parse_List[ii]] = 1
else:
num_Dict[parse_List[ii]] = num_Dict[parse_List[ii]] + 1
print(parse_Dict)
print(num_Dict)
# format the result_Dict
result_Dict = dict()
for k in parse_Dict.keys():
result_Dict[k] = "%d for %s" % (num_Dict[k], parse_Dict[k])
print(result_Dict)
parse_func(PATH)
コード出力は、
['Alpha Beta: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2017-06-15']
{'Alpha Beta: Bingo': '2017-06-15', 'Terra Zaba: Bingo': '2017-06-15'}
{'Alpha Beta: Bingo': 1, 'Terra Zaba: Bingo': 2}
{'Alpha Beta: Bingo': '1 for 2017-06-15', 'Terra Zaba: Bingo': '2 for 2017-06-15'}
です。
同じname
の要素があるがtime
と異なる要素がある場合、dict()
のキーは一意である必要があるためです。記録方法
たとえば、JSONファイルを変更するとします。
{
"logs" : [ {
"other" : "xVKNXCVNsk",
"time" : "2017-06-15T01:31:50.412Z",
"other2" : "xVKxXCbNsk",
"name" : "Alpha Beta: Bingo"
}, {
"other" : "xVKxXCbNsk",
"time" : "2017-06-15T01:31:37.229Z",
"other2" : "xVKxXCbNsk",
"name" : "Terra Zaba: Bingo"
}, {
"other" : "xVKxXCbNsk",
"time" : "2016-06-1T01:31:37.229Z",
"other2" : "xVKxXCbNsk",
"name" : "Terra Zaba: Bingo"
}]
}
注"time" : "2016-06-1T01:31:37.229Z",
ラインが変わっていました。
出力は、上記のものと異なるを確認してください。注
['Alpha Beta: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2016-06-1'] {'Terra Zaba: Bingo': '2016-06-1', 'Alpha Beta: Bingo': '2017-06-15'} {'Terra Zaba: Bingo': 2, 'Alpha Beta: Bingo': 1} {'Terra Zaba: Bingo': '2 for 2016-06-1', 'Alpha Beta: Bingo': '1 for 2017-06-15'}
に変更されます。
何を試しましたか?あなたの質問にあなたのJSONデータを修正することは、有効なJSONでも有効なPythonデータでもありません。 –
ありがとう@ChihebNexus - JSONは、受け取ったアプリケーションから自動的に出力されます。私はあなたの有益な勧告に従ってそれを修正することを確かめるでしょう。下降票もありがとう。 – dpx
私はあなたの質問をdownvoteしませんでした。どうすれば 'json.loads()'を使うことができ、JSONをPythonのdictにロードします。 –