[issue38414] Ordering a nested dictionary in python with json format
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
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
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
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
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
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
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