How to sort list inside dict in Python?

13,845

Solution 1

You aren't actually calling the sort method. Just specifying sort will return a reference to the sort method, which isn't even assigned anywhere in your case. In order to actually call it, you should add parenthesis:

for x in ab:
    ab[x].sort()
    # Here ---^

Solution 2

Not sure if you have a typo in your snippets, but here's one way to sort the values of a dictionary, where the values are lists:

>>> d1 = {"B" : ["x", "z", "k"], "A" : ["a", "c", "b"]}
>>> d2 = {x:sorted(d1[x]) for x in d1.keys()}
>>> d2
{'A': ['a', 'b', 'c'], 'B': ['k', 'x', 'z']}
Share:
13,845
Django Learner
Author by

Django Learner

Updated on June 20, 2022

Comments

  • Django Learner
    Django Learner almost 2 years

    I am trying to sort list inside of dict alphabetically but not able to do it. My list is

    {"B" : ["x", "z", "k"], "A" : ["a", "c", "b"]}
    

    What I want to do is,

    {"A" : ["k", "x", "z"], "B" : ["a", "b", "c"]}
    

    my codes are

    a = {"B" : ["x", "z", "k"], "A" : ["a", "c", "b"]}
    
    b = dict()
    
    for key, value in a.items():
         b[str(key).replace('"','')] = value
    
    ab = OrderedDict(sorted(b.items(), key=lambda t: t[0]))
    
    for x in ab:
        ab[x].sort
    
    return HttpResponse(json.dumps(ab), content_type="application/json")
    

    the output I am getting is

    { "A" : ["a", "c", "b"], "B" : ["x", "z", "k"]}
    

    can anyone tell me where is my mistake? I am printing out in django template json output.