如何在Python中对字典内的列表进行排序?

8

我试图对字典内的列表按字母顺序进行排序,但无法做到。我的列表是:

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

What I want to do is,

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

我的代码是

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")

我得到的输出是:
{ "A" : ["a", "c", "b"], "B" : ["x", "z", "k"]}

有人能告诉我我的错误在哪里吗?我正在 Django 模板中打印 JSON 输出。


什么方法?我正在Django模板输出中以JSON格式打印。 - Django Learner
2
sort 方法。 - Ignacio Vazquez-Abrams
2个回答

15

实际上,你并没有调用sort方法。只是指定sort会返回对sort方法的引用,在你的情况下甚至没有被赋值到任何地方。为了真正调用它,你应该添加括号:

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

我已经点赞并接受了你的答案。我不知道还有谁这样做了。 - Django Learner

6

不确定您的代码片段是否有错别字,但以下是一种对字典中值为列表的数据进行排序的方法:

>>> 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']}

3
具体来说,这会导致一个“新的”字典,其中值列表被排序。这可能是所期望的,也可能不是。 - Ignacio Vazquez-Abrams
嗯,我想那需要向提问者澄清。 :| - Alex Reynolds
@AlexReynolds,你的回答有点帮助我了。但是另一个答案是完美的。无论如何,谢谢你的帮助。:D 我非常感激。 - Django Learner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接