Re: python, sorting a dict/json

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ (text/plain)
Delete this message
Reply to this message
Author: James Dugger
Date:  
To: Main PLUG discussion list
Subject: Re: python, sorting a dict/json
Also if you already have the json string in a python variable you can just
pass it into json.load(my_json_string)

On Fri, Feb 22, 2019 at 6:58 PM James Dugger <> wrote:

> I should also say that you can replace k['date'] in the lambda with
> k['title'] or k['url'] to sort by other keys (although I don't know off
> hand the result of k['url']
>
>
> On Fri, Feb 22, 2019 at 6:44 PM James Dugger <>
> wrote:
>
>> import json
>>> from datetime import datetime
>>>
>>> with open('testp.json') as f:
>>>     data = json.load(f)

>>>
>>> for i in data['pubs']:
>>>     pub_date = datetime.strptime(i['date'], '%Y%m%d')
>>>     i['date'] = pub_date

>>>
>>> pub_list = sorted(data['pubs'], key=lambda k: k['date'])
>>>
>>> print(pub_list)
>>>
>>> open parses the json file into a python dictionary. Currently the
>> format of your json will produce a dictionary with one key 'pubs' and a
>> value formatted as a python list of nested dictionaries.
>>
>> The for loop targets the list inside the main dictionary and first
>> converts the date to a python date object.
>>
>> Then simply use the sorted method with a lambda expression to sort the
>> order of dictionaries by the newly created date objects.
>>
>> Yor initial date values are integers. You will need to either store them
>> in the json object as strings or convert them so that datetime.strptime()
>> can parse them.
>>
>> I'm sure there are other ways to do this but this was the fastest given
>> the json format.
>>
>> On Fri, Feb 22, 2019 at 12:21 PM der.hans <> wrote:
>>
>>> moin moin,
>>>
>>> I'm trying to sort some data that is currently in json being imported
>>> into
>>> a dict.
>>>
>>> It's essentially bibliography information, but without a unique ID.
>>>
>>> I mostly want to sort on publication date, but also want to group by
>>> publication. There could be multiple publications on the same date.
>>>
>>> Currently using a json format like:
>>>
>>> {
>>>   "pubs": [
>>>    {
>>>     "date": 20190222
>>>     "title": "a title"
>>>     "url": "https://some.domain/page.html"
>>>    },
>>>    {
>>>     "date": 20190221
>>>     "title": "another title"
>>>     "url": "https://some.other.domain/page.html"
>>>    }
>>>   ]
>>> }

>>>
>>> Format can change if that helps.
>>>
>>> I want to be able to display items in order. Mostly chronological, but
>>> also by other details.
>>>
>>> Any suggestions for how to sort them for display?
>>>
>>> A nice, but not required, feature would be sorting them for saving to
>>> disk
>>> as well.
>>>
>>> ciao,
>>>
>>> der.hans
>>> --
>>> # https://www.LuftHans.com https://www.PhxLinux.org
>>> # "You want weapons? We're in a library! Books! The best weapons in the
>>> # world! This room's the greatest arsenal we could have - arm
>>> yourselves!"
>>> # -- the Doctor: Doctor Who, Tooth and Claw, 2006
>>> ---------------------------------------------------
>>> PLUG-discuss mailing list -
>>> To subscribe, unsubscribe, or to change your mail settings:
>>> https://lists.phxlinux.org/mailman/listinfo/plug-discuss
>>
>>
>>
>> --
>> James
>>
>> *Linkedin <http://www.linkedin.com/pub/james-h-dugger/15/64b/74a/>*
>>
>
>
> --
> James
>
> *Linkedin <http://www.linkedin.com/pub/james-h-dugger/15/64b/74a/>*
>



--
James

*Linkedin <http://www.linkedin.com/pub/james-h-dugger/15/64b/74a/>*
---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss