gpt4 book ai didi

python - 计算项目在 JSON 元素中的出现次数

转载 作者:太空狗 更新时间:2023-10-29 20:49:39 24 4
gpt4 key购买 nike

我正在使用 Python 来解析英国警察 API。我想要的是分析我得到的 JSON 响应,以计算特定攻击发生的次数。这是来自 API 的响应示例。

{
category: "anti-social-behaviour",
location_type: "Force",
location: {
latitude: "53.349920",
street: {
id: 583315,
name: "On or near Evenwood Close"
},
longitude: "-2.657889"
},
context: "",
outcome_status: null,
persistent_id: "",
id: 22687179,
location_subtype: "",
month: "2013-03"
},

使用这段代码

from json import load
from urllib2 import urlopen
import json

url = "http://data.police.uk/api/crimes-street/all-crime?lat=53.396246&lng=-2.646960&date=2013-03"
json_obj = urlopen(url)
player_json_list = load(json_obj)

for player in player_json_list:
crimeCategories = json.dumps(player['category'], indent = 2, separators=(',', ': '))
print crimeCategories

我收到这样的回复

"anti-social-behaviour"
"anti-social-behaviour"
"anti-social-behaviour"
"anti-social-behaviour"
"drugs"
"drugs"
"burglary"

如果我将 for 循环更改为

for player in player_json_list:
crimeCategories = json.dumps(player['category'], indent = 2, separators=(',', ': '))
print crimeCategories.count("drugs")

然后我得到类似的回复

0
0
0
0
1
1
0

搜索论坛几个小时对我没有帮助!有什么想法吗?

最佳答案

您可以将 collections.Counter dict 与 requests 一起使用,它变成了几行简洁的代码:

import  requests
from collections import Counter

url = "http://data.police.uk/api/crimes-street/all-crime?lat=53.396246&lng=-2.646960&date=2013-03"
json_obj = requests.get(url).json()

c = Counter(player['category'] for player in json_obj)
print(c)

输出:

Counter({'anti-social-behaviour': 79, 'criminal-damage-arson': 12, 'other-crime': 11, 'violent-crime': 9, 'vehicle-crime': 7, 'other-theft': 6, 'burglary': 4, 'public-disorder-weapons': 3, 'shoplifting': 2, 'drugs': 2})

如果您更喜欢普通的字典,那么只需在计数器字典上调用字典即可​​:

from pprint import pprint as pp
c = dict(c)
pp(c)
{'anti-social-behaviour': 79,
'burglary': 4,
'criminal-damage-arson': 12,
'drugs': 2,
'other-crime': 11,
'other-theft': 6,
'public-disorder-weapons': 3,
'shoplifting': 2,
'vehicle-crime': 7,
'violent-crime': 9}

然后您只需通过键 c['drugs'] 等访问。

或者迭代项目以打印犯罪并以您想要的格式计数:

for k, v in c.items():
print("{} count: {}".format(k, v)

输出:

drugs count:  2
shoplifting count: 2
other-theft count: 6
anti-social-behaviour count: 79
violent-crime count: 9
criminal-damage-arson count: 12
vehicle-crime count: 7
public-disorder-weapons count: 3
other-crime count: 11
burglary count: 4

关于python - 计算项目在 JSON 元素中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com