[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


New submission from Umar Asghar :

Python does not preserve ordering in JSON format. I have tested it out but it's 
not working. Here is my code.

# Python3 code to demonstrate 
# Sort nested dictionary by key 
# using OrderedDict() + sorted() 
from collections import OrderedDict 
from operator import getitem 
import json

# initializing dictionary 
test_dict = {'Nikhil' : { 'roll' : 24, 'marks' : 17}, 
'Akshat' : {'roll' : 54, 'marks' : 12}, 
'Akash' : { 'roll' : 12, 'marks' : 15}} 

# printing original dict 
print("The original dictionary : " + str(test_dict)) 

# using OrderedDict() + sorted() 
# Sort nested dictionary by key 
res = OrderedDict(sorted(test_dict.items(), 
key = lambda x: getitem(x[1], 'marks'))) 

print("The sorted dictionary by marks is : " + str(res))
# Output
# The sorted dictionary by marks is : OrderedDict([('Akshat', {'marks': 12, 
'roll': 54}), ('Akash', {'marks': 15, 'roll': 12}), ('Nikhil', {'marks': 17, 
'roll': 24})])

res = json.dumps(res)

# print result 
print("The sorted dictionary by marks is : (json)")
print(json.loads(res)) 
# Output
# The sorted dictionary by marks is : 
# {'Akash': {'marks': 15, 'roll': 12}, 'Akshat': {'marks': 12, 'roll': 54}, 
'Nikhil': {'marks': 17, 'roll': 24}}
Does anyone suggest any solution for it?

It's different than a simple dictionary. It only targets the nested dictionary 
ordering. Please don't mark it a duplication of simple dictionary ordering with 
JSON. thanks

--
messages: 354228
nosy: Umar Asghar
priority: normal
severity: normal
status: open
title: Ordering a nested dictionary in python with json format

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


Umar Asghar  added the comment:

I guess it exists in all Python versions. I have tested in both Python 2 and 
Python 3.

Python 2.7.15+ (default, Jul  9 2019, 16:51:35) 
[GCC 7.4.0] on linux2

Python 3.6.8 (default, Aug 20 2019, 17:12:48) 
[GCC 8.3.0] on linux

--
versions: +Python 3.9

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


Change by Umar Asghar :


Added file: https://bugs.python.org/file48649/test.py

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


Umar Asghar  added the comment:

I have recently attached the file, please review it as a code reference.

--

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


Change by Umar Asghar :


--
versions: +Python 2.7 -Python 3.9

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


Umar Asghar  added the comment:

Please ignore the above shared sample data in the above code and consider this 
one.

this is the exact code that is misbehaving in python 2.7


# Sort nested dictionary by key
# using OrderedDict() + sorted()
from collections import OrderedDict
from operator import getitem
import json

# initializing dictionary
test_dict = {'3' : { 'roll' : 24, 'marks' : 17},
'2' : {'roll' : 54, 'marks' : 12},
'1' : { 'roll' : 12, 'marks' : 15}}

# printing original dict
print("The original dictionary : " + str(test_dict))

# using OrderedDict() + sorted()
# Sort nested dictionary by key
res = OrderedDict(sorted(test_dict.items(),
key = lambda x: getitem(x[1], 'marks')))

print("The sorted dictionary by marks is : " + str(res))
# Output
# The sorted dictionary by marks is : OrderedDict([('2', {'roll': 54, 'marks': 
12}), ('1', {'roll': 12, 'marks': 15}), ('3', {'roll': 24, 'marks': 17})])

res1 = json.dumps(res)

# print result
print("The sorted dictionary by marks is : (json)")
print(json.loads(res1))
# Output
# The sorted dictionary by marks is : (json)
# {u'1': {u'roll': 12, u'marks': 15}, u'3': {u'roll': 24, u'marks': 17}, u'2': 
{u'roll': 54, u'marks': 12}}

--
Added file: https://bugs.python.org/file48650/bug.py

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38414] Ordering a nested dictionary in python with json format

2019-10-08 Thread Umar Asghar


Change by Umar Asghar :


--
type:  -> enhancement

___
Python tracker 
<https://bugs.python.org/issue38414>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com