2015-10-22 138 views
4

我想按字母順序排列字典中的列表,但無法做到這一點。我的名單如何在Python中對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輸出中打印出來。

+1

調用該方法。 – user2357112

+0

有什麼方法?我在django模板輸出中打印出json。 –

+2

...「排序」方法。 –

回答

4

你實際上並沒有調用sort方法。只需指定sort將返回對sort方法的引用,該方法在您的案例中甚至沒有分配到任何地方。爲了實際調用它,您應該添加括號:

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

Thanx @Mureinik ....我很笨... –

+1

爲什麼downvote? – Mureinik

+0

我已upvoted您的答案,並接受它。我不知道還有誰做過。 –

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

更具體地說,這會產生一個* new *字典,其中對值列表進行排序。這可能是也可能不是所期望的。 –

+0

那麼,我想,這需要提問者澄清。 :| –

+0

@AlexReynolds,你的回答有點幫助我。但另一個答案是完美的。無論如何,謝謝你幫助我。 :D我真的很感激它。 –