我试图按字母顺序对dict中的列表进行排序但不能这样做。我的清单是
{"B" : ["x", "z", "k"], "A" : ["a", "c", "b"]}
我想做的是,
{"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输出中打印出来。
答案 0 :(得分:5)
您实际上并未调用sort
方法。只需指定sort
即可返回对sort
方法的引用,该方法甚至不会在您的案例中的任何位置分配。为了实际调用它,你应该添加括号:
for x in ab:
ab[x].sort()
# Here ---^
答案 1 :(得分:3)
不确定您的代码段中是否有拼写错误,但这是对字典值进行排序的一种方法,其中值为列表:
>>> 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']}