Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 统计JSON元素中由另一个元素分组的项的出现次数_Python 3.x - Fatal编程技术网

Python 3.x 统计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_

我正在尝试统计由另一个项目源分组的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)
代码正确计数并输出如下

计数器{‘快’: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',谢谢你的快速响应,是的,它完成了这个技巧,并且返回了我想要的东西!我怎么接受这个答案呢?我会把它作为未来参考的答案。哈哈,在我问之前你就回答了我的问题