如何在Python中对dict中的列表进行排序?

Dja*_*ner 6 python sorting dictionary list alphabetical

我试图按字母顺序对dict中的列表进行排序但不能这样做.我的名单是

{"B" : ["x", "z", "k"], "A" : ["a", "c", "b"]}
Run Code Online (Sandbox Code Playgroud)

我想做的是,

{"A" : ["k", "x", "z"], "B" : ["a", "b", "c"]}
Run Code Online (Sandbox Code Playgroud)

我的代码是

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")
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

{ "A" : ["a", "c", "b"], "B" : ["x", "z", "k"]}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我的错误在哪里?我在django模板json输出中打印出来.

Mur*_*nik 9

你实际上并没有调用这个sort方法.只是指定sort将返回对sort方法的引用,在您的情况下甚至不在任何地方分配.为了实际调用它,你应该添加括号:

for x in ab:
    ab[x].sort()
    # Here ---^
Run Code Online (Sandbox Code Playgroud)


Ale*_*lds 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']}
Run Code Online (Sandbox Code Playgroud)

  • 更具体地说,这会产生一个*新*字典,其中值列表已排序。这可能是也可能不是所期望的。 (3认同)