Я пытаюсь выполнить поиск файла данных, например Yelp.json. В нем работают предприятия в Лос-Анджелесе, Бостон, округ Колумбия.Подсчет элементов в Python из файла JSON
Я написал:
# Python 2
# read json
with open('updated_data.json') as facts_data:
data = json.load(facts_data)
# return every unique locality along with how often it occurs
locality = []
unique_locality = []
# Load items into lists
for item in data:
locality.append(data["payload"]["locality"])
if data["payload"]["locality"] not in unique_locality:
print unique_locality.append(data["payload"]["locality"])
# Loops over unique_locality and count from locality
print "Unique Locality Count:", unique_locality, locality.count(data["payload"]["locality"])
Но я получаю ответ «Портсмут 1», что означает, что не обеспечивает все города и не может быть даже при условии, все счетчики. Моя цель в этом разделе - найти этот файл JSON и сказать: «DC: 10 компаний, LA: 20 компаний, Boston: 2 предприятия». Каждая полезная нагрузка представляет собой группировку информации об одном бизнесе, а «местность» - это всего лишь город. Поэтому я хочу, чтобы он нашел, сколько уникальных городов есть, а затем сколько предприятий в каждом городе. Таким образом, одна полезная нагрузка может быть Starbucks в la, другая полезная нагрузка может быть Starbucks в DC, другой может быть Chipotle в la.
Пример JSON файл (JSONlite.com говорит, что его действительный):
"payload": {
"existence_full": 1,
"geo_virtual": "[\"56.9459720|-2.1971226|20|within_50m|4\"]",
"latitude": "56.945972",
"locality": "Stonehaven",
"_records_touched": "{\"crawl\":8,\"lssi\":0,\"polygon_centroid\":0,\"geocoder\":0,\"user_submission\":0,\"tdc\":0,\"gov\":0}",
"address": "The Lodge, Dunottar",
"email": "[email protected]",
"existence_ml": 0.5694238217658721,
"domain_aggregate": "",
"name": "Dunnottar Castle",
"search_tags": ["Dunnottar Castle Aberdeenshire", "Dunotter Castle"],
"admin_region": "Scotland",
"existence": 1,
"category_labels": [
["Landmarks", "Buildings and Structures"]
],
"post_town": "Stonehaven",
"region": "Kincardineshire",
"review_count": "719",
"geocode_level": "within_50m",
"tel": "01569 762173",
"placerank": 65,
"longitude": "-2.197123",
"placerank_ml": 37.27916073464469,
"fax": "01330 860325",
"category_ids_text_search": "",
"website": "http://www.dunnottarcastle.co.uk",
"status": "1",
"geocode_confidence": "20",
"postcode": "AB39 2TL",
"category_ids": [108],
"country": "gb",
"_geocode_quality": "4",
"uuid": "3867aaf3-12ab-434f-b12b-5d627b3359c3"
},
"payload": {
"existence_full": 1,
"geo_virtual": "[\"56.237480|-5.073578|20|within_50m|4\"]",
"latitude": "56.237480",
"locality": "Inveraray",
"_records_touched": "{\"crawl\":11,\"lssi\":0,\"polygon_centroid\":0,\"geocoder\":0,\"user_submission\":0,\"tdc\":0,\"gov\":0}",
"address": "Cherry Park",
"email": "[email protected]",
"longitude": "-5.073578",
"domain_aggregate": "",
"name": "Inveraray Castle",
"admin_region": "Scotland",
"search_tags": ["Inveraray Castle Tea Room", "Inverary Castle"],
"existence": 1,
"category_labels": [
["Social", "Food and Dining", "Restaurants"]
],
"region": "Argyll",
"review_count": "532",
"geocode_level": "within_50m",
"tel": "01499 302203",
"placerank": 67,
"post_town": "Inveraray",
"placerank_ml": 41.19978087352266,
"fax": "01499 302421",
"category_ids_text_search": "",
"website": "http://www.inveraray-castle.com",
"status": "1",
"geocode_confidence": "20",
"postcode": "PA32 8XE",
"category_ids": [347],
"country": "gb",
"_geocode_quality": "4",
"existence_ml": 0.7914881102847783,
"uuid": "8278ab80-2cd1-4dbd-9685-0d0036b681eb"
},
Можете ли вы поделиться своим обновленным_data.json несколькими записями? – wtpoo
Просто добавлен фрагмент файла JSON – Aaron
Образец json в вашем вопросе не содержит внешних символов '{' и '}'. Если они действительно существуют, тогда, когда вы 'json.load()' it в Python, он станет словарем с только _one_ '" полезной нагрузкой ", потому что словари не могут иметь дубликаты ключей. 'print (data)' и посмотреть, что в нем. – martineau