Python sort json by key

Как отсортировать объекты JSON в Python — подсказка для Linux

Файл JSON — очень популярное средство обмена данными между разными типами языков программирования. Это не зависящий от языка текстовый формат файла, в котором данные хранятся с использованием массива и объекта. Он может хранить числа, строки, логические значения и другой массив или объект в качестве содержимого. Объект JSON можно отсортировать с помощью встроенных функций, модулей и пользовательских функций Python. В этом руководстве описаны различные способы сортировки объекта JSON в Python.

Пример-1: Сортировка объекта JSON с помощью json.dumps ()

С использованием json.dumps () функция — это один из способов сортировки объекта JSON. Он используется для преобразования массива объектов JSON в отсортированный объект JSON. Для значения аргумента sort_keys функции dumps () потребуется установить True, чтобы сгенерировать отсортированные объекты JSON из массива объектов JSON. Создайте файл python со следующим скриптом для сортировки объектов JSON с помощью функции json.dumps (). Как исходный, так и отсортированный объекты JSON будут напечатаны после выполнения скрипта.

# Импортируем модуль JSON
Импортировать json
# Массив объектов JSON
товары = [ < "название" : «HDD» , "бренд" : "Samsung" , "цена" : 100 >,
< "название" : «Монитор» , "бренд" : «Делл» , "цена" : 120 >,
< "название" : "Мышь" , "бренд" : «Логитек» , "цена" : 10 >]
# Прочитать и распечатать исходные данные
Распечатать ( «Исходные данные: \ п » . формат ( товары ) )
# Преобразовать в объект JSON после сортировки
sorted_json_data = json. свалки ( товары , sort_keys = Истинный )
# Распечатать отсортированные данные JSON
Распечатать ( «Отсортированные данные JSON на основе ключей: \ п » . формат ( sorted_json_data ) )

Выход:

следующий вывод появится после выполнения сценария. Каждый объект JSON содержит три пары ключ-значение в массиве JSON. Значения объектов отсортированы на основе ключей в выводе. Согласно значению ключа, ключ бренда появился первым, а ключ цены появился последним в зависимости от сортировки.

Пример-2: Сортировка объекта JSON с использованием лямбда-выражения

Использование лямбда в функции sort () — еще один способ сортировки объектов JSON. Создайте файл python со следующим скриптом для сортировки объектов JSON с помощью sort () и лямбда-функции. Конкретный ключ или ключи могут быть упомянуты для сортировки, когда лямбда используется для сортировки. В следующем скрипте используется тот же массив объектов JSON, что и в предыдущем примере. В объектах JSON существует три ключа. Это название, торговая марка и цена. Ключ бренда упоминается в sort () для ключа сортировки. Таким образом, объекты JSON будут отсортированы на основе значений ключа «brand». Как исходные, так и отсортированные значения будут напечатаны как выходные.

Читайте также:  Response redirect html code

# Массив объектов JSON
товары = [ < "название" : «HDD» , "бренд" : "Samsung" , "цена" : "$100" >,
< "название" : «Монитор» , "бренд" : «Делл» , "цена" : "$120" >,
< "название" : "Мышь" , "бренд" : «Логитек» , "цена" : "$10" >]
# Распечатать исходные данные
Распечатать ( «Исходные данные JSON: \ п » . формат ( товары ) )
# Сортировка данных JSON по значению ключа бренда
товары. Сортировать ( ключ = лямбда х: х [ «бренд» ] )
# Распечатать отсортированные данные JSON
Распечатать ( «Сортированные данные JSON на основе ценности бренда: \ п » . формат ( товары ) )

Выход:

следующий вывод появится после выполнения сценария. В сценарии определены три ценности бренда: Samsung, Dell и Logitech. После сортировки объект, содержащий товар из «Dell«Бренд» появился первым, а объект, содержащий «Samsung«Торговая марка появилась в выпуске последней.

Пример-3: Сортировка объекта JSON с помощью функции сортировки

Создайте файл python со следующим сценарием для сортировки объектов JSON с помощью pprint модуль и отсортировано () функция. В pprint модуль импортируется в скрипт для использования функции pprint () для форматирования вывода JSON. В скрипте объявлен массив из четырех объектов JSON. Каждый объект содержит три пары «ключ-значение». Ключи название, сообщение, и электронное письмо. Пользовательская функция с именем sort_by_key () объявлен для сортировки объектов JSON на основе значения ‘название‘ ключ. Эта функция вызывается в отсортировано () функция, используя аргумент с именем ключ. После выполнения отсортировано () функции, объекты JSON будут напечатаны путем сортировки объектов на основе значений ключа имени.

# импортировать модуль pprint
Импортировать pprint
# Массив объектов JSON
employee_list = [
<
‘название’ : ‘Фироз Шах’ ,
‘сообщение’ : ‘HR’ ,
‘электронное письмо’ : ‘Бухгалтер’
> ,
<
‘название’ : ‘Айян хасан’ ,
‘сообщение’ : ‘Продажи’ ,
‘электронное письмо’ : ‘Управляющий делами’
> ,
<
‘название’ : ‘Махмуда Фероз’ ,
‘сообщение’ : «Маркетинг» ,
‘электронное письмо’ : ‘ГЕНЕРАЛЬНЫЙ ДИРЕКТОР’
> ]
# Распечатать исходный список JSON
Распечатать ( «Массив объектов JSON перед сортировкой:» )
pprint . pprint ( employee_list )
# Объявить функцию для возврата отсортированных данных по имени
def sort_by_key ( список ) :
возвращение список [ ‘название’ ]
# Распечатать отсортированный список JSON на основе ключа имени
Распечатать ( » \ п Массив объектов JSON после сортировки: » )
pprint . pprint ( отсортированный ( employee_list , ключ = sort_by_key ) )

Выход:

Следующий вывод появится после выполнения вышеуказанного сценария. В скрипте определены три значения ключа имени: «Фироз шах», «Айян хасан» и «Махмуда Фероз». После сортировки объект JSON, содержащий «Aiyan hasan» в ключе имени, появился первым, а объект JSON, содержащий Mahmuda Feroz »в ключе имени, появился в выходных данных последним.

Пример-4: Сортировка объектов JSON в порядке убывания

В трех предыдущих примерах объекты JSON отсортированы по возрастанию. В этом примере показан способ сортировки объекта JSON в порядке убывания на основе определенного значения ключа. Создайте файл python со следующим скриптом, который будет сортировать объекты JSON в порядке убывания на основе значения ключа цены.

Импортировать pprint
# Массив объектов JSON
товары = [ < "название" : «HDD» , "бренд" : "Samsung" , "цена" : "$100" >,
< "название" : «Монитор» , "бренд" : «Делл» , "цена" : "$120" >,
< "название" : "Мышь" , "бренд" : «Логитек» , "цена" : "$10" >]

Читайте также:  Заголовок страницы

Распечатайте отсортированные объекты JSON в порядке убывания
на основе ключевого значения цены

Распечатать ( » \ п Массив объектов JSON после сортировки: » )
товары = отсортированный ( товары , ключ = лямбда к: к [ ‘цена’ ] , задний ход = Истинный )
pprint . pprint ( ( товары ) )

Выход:

Следующий вывод появится после выполнения вышеуказанного сценария. После сортировки объектов JSON первым появился объект, содержащий наивысшее значение цены, а последним в выходных данных — объект, содержащий наименьшее значение цены.

Вывод:

В этом руководстве на различных примерах показано четыре различных способа сортировки объектов JSON. Функции sort (), sorted () и dumps () используются здесь для сортировки объекта JSON в порядке возрастания и убывания.

Источник

Python – Sorting JSON by Keys

Python doesn’t allow sorting of a dictionary. But while converting dictionary to a JSON, you can explicitly sort it so that the resulting JSON is sorted by keys. This is true for multi-dimentional dictionary. In case you need to sort a multi-dimentional JSON, convert it to dictionary and then dump it back to JSON with sorted flag.

ud = json.loads(js) print js # Unsorted JSON print ud # JSON to Dictionary (Unsorted) print json.dumps(ud, sort_keys=True) # This JSON will be sorted recursively

Share this:

Like this:

2 thoughts on “ Python – Sorting JSON by Keys ”

Thanks for the post, it’s really interesting, Python is wonderful for these things. Few months ago I wrote a function in C# to achieve the same result, using the popular JSON.NET library.
1. in C# is painful, when you want to read an anonymous structure and sort it
2. many people gave up when they tried, some say that it’s not even possible to sort anonymous types (I read many comments in StackOverflow)

Tim Swast says:

Thank you Varun! Great tip. I’m glad I didn’t have to do something funny like trying to use an OrderedDict.

Leave a Reply Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Источник

Сортировка json по одному из полей

Сортировка по одному из полей
Здравствуйте! Подскажите, пожалуйста, как сделать сортировку по одному из полей. Никак в голову не.

Сортировка классов по одному из полей
есть List<Employee> у работника есть фамилия и имя. Нужно выполнить сортировку по фамилии и, если.

Сортировка по одному из полей в структуре
Задана структуру с именем info, содержащую номер, имя и фамилию, а также дату рождения человека.

Сортировка по одному из полей класса
Всем привет. Я сделал вот такой список. Вопрос как мне его отсортировать, к примеру, по Id и по.

Эксперт Python

Лучший ответ

Сообщение было отмечено dondublon как решение

Читайте также:  W3css 4 w3 css

Решение

1) JSON это строка (wiki: текстовый формат обмена данными). У строки нет полей.
2) Если все-таки имеется ввиду не JSON, а структура данных полученная из JSON, то

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
s = '''[   "id": 1, "name": "ivan" >,   "id": 17, "name": "anatoli" >,   "id": 5, "name": "igor" > ]''' >>> import json >>> json.loads(s) [{'id': 1, 'name': 'ivan'}, {'id': 17, 'name': 'anatoli'}, {'id': 5, 'name': 'igor'}] >>> l = json.loads(s) >>> sorted(l,key=lambda x:x['id']) # сортировка по возрастанию значения ключа id [{'id': 1, 'name': 'ivan'}, {'id': 5, 'name': 'igor'}, {'id': 17, 'name': 'anatoli'}] >>>

Эксперт Python

Black Fregat,
Функции в модуле operator реализованы в чистом python, поэтому по производительности простая lambda вряд ли будет сильно отличаться от них. В некоторых случаях они просто более читабельны. Поэтому пользуюсь и тем и другим вариантом в зависимости от задачи.

Добавлено через 6 минут
P.S. Кстати, вот здесь, например, пишут что прямое обращение по ключу быстрее, чем через тот же itemgetter.

Garry Galler, да, я тоже встречал такое мнение. Мне в результате непонятно, зачем же itemgetter и attrgetter вообще нужны.

Эксперт Python

Сделал я небольшой тест скорости работы: если использовать itemgetter на другом use case (не как в посте на stackoverflow), то он чуть быстрее будет.

# словарь в примере используется чтобы получить неупорядоченный набор данных >>> mydict = {str(x):x for x in range(1000000,0,-1)} >>> from timeit import timeit >>> from operator import itemgetter >>> f1 = lambda: sorted(mydict.items(), key=lambda x: x[1]) >>> f2 = lambda: sorted(mydict.items(), key=itemgetter(1)) >>> timeit(f1,number=3) 6.965966126746707 >>> timeit(f2,number=3) 6.427137572734239 >>>

Поэтому что использовать все-таки нужно по задаче смотреть: где-то простая лямбда будет проще, где-то наоборот —
функции из operator будут более органичны.

Сортировка list по одному из полей
Помогите пожалуйста! У меня есть структура, содержащая несколько полей (типа int, char, char). Я.

Сортировка коллекции по одному из полей
Есть коллекция. public List<worker> Workers = new List<worker>(); worker содержит поля: public.

Сортировка таблицы DataTable по одному из полей
Таблица получается путем запроса из бд. Нужно отсортировать ее по какому нибудь из полей.

Сортировка по одному из полей std::vector
Подскажите пожалуйста! Задача: Имеется класс Person с полями: Family, Name, BirthDay, Sex.

Сортировка по одному из полей моего класса
Имеется класс с множеством полей типа строка, как реализовать сортировку по одному из полей? .

Сортировка массива структур по одному из полей
Задание 1.Описать структуру с именем STUDENT, содержащую следующие поля: • NAME – фамилия и.

Сортировка массива записей по одному из полей
написать программу, которая сортирует по полю fn записи следующего типа Type tr = record key.

Источник

Оцените статью