我试图计算一个项目(活动)在另一个项目(源)分组的json文件中的出现次数。下面的示例json。
{
"No": "9",
"Time": "08:12",
"Source": "location1",
"Dest": "location3",
"Activity": "fast"
}
到目前为止,我下面的代码计算了每个活动的发生次数
from collections import Counter
import json
with open('dataset_3.json', 'r') as json_file:
json_data = json.load(json_file) # loads json data
c = Counter(item['Activity'] for item in json_data)
print(c)
该代码正确计数并在下面输出。
Counter({'fast':8,'medium':1,'slow':1})
我现在想再次计算每次活动的发生,但按位置分组,因此输出应类似于:
位置1快:8,中:1,慢:2
位置2快:6,中:3,慢:4
我尝试了以下代码,但输出不正确(请参见下文)
with open('dataset_3.json', 'r') as json_file:
json_data = json.load(json_file) # loads json data
for item in json_data:
if item['Source'] == 'location1':
c = Counter(item['Activity'])
print(c)
输出
Counter({'f': 3, 'a': 1, 's': 1, 't'})
Counter({'s': 1, 'l': 1, 'o': 1, 'w'})
答案 0 :(得分:1)
您可以将if
放在Counter
的生成器语句中,以向for
循环中添加条件。我用以下修复程序粘贴了您的代码:
from collections import Counter
import json
with open('dataset_3.json', 'r') as json_file:
json_data = json.load(json_file) # loads json data
c = Counter(item['Activity'] for item in json_data if item['Source'] == 'location1')
print(c)