сортировка вывода файла python по местоположению. прирост по общему id

Есть несколько экземпляров данных, которые имеют одинаковые идентификаторы местоположения, например, на выходе ниже есть много 3 с:

  121 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/121/location'}} 122 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/122/location'}} 120 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/120/location'}} 119 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/119/location'}} 191 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/191/location'}} 190 {'data': {'id': 52, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/190/location'}} 193 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/193/location'}} 187 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/187/location'}} 189 {'data': {'id': 52, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/189/location'}} 186 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/186/location'}} 198 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/198/location'}} 196 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/196/location'}} 199 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/199/location'}} 201 {'data': {'id': 3, 'type': 'location'}, 'links': {'self': 'http://localhost:2510/api/v2/jobs/201/location'}} 

Я бы хотел отсортировать их по типу:

 {'data': {'id': 3, 'type': 'location'} 15 {'data': {'id': 4, 'type': 'location'} 6 {'data': {'id': 5, 'type': 'location'} 0 {'data': {'id': 6, 'type': 'location'} 11 

Есть ли способ адаптировать этот сценарий python для вывода таких данных?

На самом деле это происходит из этого файла JSON, который выглядит так:

  { "links": { "self": "http://localhost:2510/api/v2/jobs?skills=data%20science" }, "data": [ { "id": 121, "type": "job", "attributes": { "title": "Data Scientist", "date": "2014-01-22T15:25:00.000Z", "description": "Data scientists are in increasingly high demand amongst tech companies in London. Generally a combination of business acumen and technical skills are sought. Big data experience ..." }, "relationships": { "location": { "links": { "self": "http://localhost:2510/api/v2/jobs/121/location" }, "data": { "type": "location", "id": 3 } }, "country": { "links": { "self": "http://localhost:2510/api/v2/jobs/121/country" }, "data": { "type": "country", "id": 1 } }, "skills": { "links": { 

и анализируется с использованием следующего сценария python:

 import json from pprint import pprint with open('data.json') as data_file: data = json.load(data_file) for item in data["data"]: print(item['id'], item['relationships']['location']) 

Это полный файл данных в моем GitHub .

2 Solutions collect form web for “сортировка вывода файла python по местоположению. прирост по общему id”

Если я правильно понял, у вас есть список элементов со структурой вроде этого:

 ... {{'data': {'id': 3, 'type': 'location'} ... } {{'data': {'id': 3, 'type': 'location'} ... } {{'data': {'id': 4, 'type': 'location'} ... } ... 

И вы хотите подсчитать количество элементов с каждой уникальной комбинацией id и type и распечатать результаты в отсортированном порядке?

Вы можете использовать общий шаблон словаря counting:

 counts = dict() for item in data['data']: # here I assume the items you are looking for are locations # for it to be a key, it has to be immutable, so make it a tuple val = item['relationships']['location']['data'] location_tuple = (val['id'], val['type']) if location_tuple in counts: counts[location_tuple] += 1 else: counts[location_tuple] = 1 # print them out in order, first send to list of tuples and sort results = counts.items() results.sort() # will sort on first item, which will be id # results come in like so: ((3, location), 15) for item in results: print 'id:', item[0][0], 'type:', item[0][1], 'count:' item[1] 

Основная идея здесь заключается в том, что вы можете использовать словарь для подсчета с помощью кортежей в качестве ключей всех разных вещей, которые хотите подсчитать, а затем использовать элементы, чтобы получить их как список кортежей, которые можно сортировать. Кортежи сортируются по первому элементу, второму элементу и т. Д., Рекурсивно, поэтому будьте осторожны при построении кортежей, чтобы поместить первый ключ сортировки в первую позицию и т. Д., Или вам придется внести коррективы в ваш тип вызов. Возможно, вам придется настроить то, что у меня есть, в зависимости от того, что вы хотите извлечь и распечатать.

Поместите данные в базу данных (например, SQLite), затем «GROUP BY».

  • json сериализует словарь с кортежами как ключ
  • Ошибка Django Ajax "FORBIDDEN"
  • Вставка реляционных данных в SQL Alchemy с запросами API в Python
  • Выполнять задачу сразу после возвращения JSON
  • Python: ключи по умолчанию, чтобы избежать KeyError
  • Как импортировать узлы python node в neo4j?
  • Заменить значение в файле JSON для ключа, который может быть вложен в n уровней
  • python json error: ValueError: Ожидающее значение: строка 1 столбец 1 (char 0)
  • Json dumping a dict дает TypeError: ключи должны быть строкой
  • «Лучший» способ интегрировать Django с библиотекой Ajax
  • Почему PyYAML тратит столько времени на разбор файла YAML?
  • Python - лучший язык программирования в мире.