Python 3.x 统计JSON元素中由另一个元素分组的项的出现次数
我正在尝试统计由另一个项目源分组的json文件中某个项目活动的发生次数。下面是json示例Python 3.x 统计JSON元素中由另一个元素分组的项的出现次数,python-3.x,Python 3.x,我正在尝试统计由另一个项目源分组的json文件中某个项目活动的发生次数。下面是json示例 { "No": "9", "Time": "08:12", "Source": "location1", "Dest": "location3", "Activity": "fast" } 到目前为止,我下面的代码统计每个活动的发生次数 from collections import Counter import json with open('dataset_
{
"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)
代码正确计数并输出如下
计数器{‘快’:8,‘中’:1,‘慢’: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'})
您可以在计数器的生成器语句中放入if,以便向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)
在你的第一个代码示例中,你能用你的生成器做一个if吗?比如:c=Counteritem['Activity'],对于json_数据中的item,if item['Source']=='location1',谢谢你的快速响应,是的,它完成了这个技巧,并且返回了我想要的东西!我怎么接受这个答案呢?我会把它作为未来参考的答案。哈哈,在我问之前你就回答了我的问题