簡體   English   中英

如何在Python中對dict中的列表進行排序?

[英]How to sort list inside dict in 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輸出中打印出來。

你實際上並沒有調用sort方法。 只是指定sort將返回對sort方法的引用,在您的情況下甚至不會在任何地方分配。 為了實際調用它,你應該添加括號:

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

不確定你的片段中是否有拼寫錯誤,但這里有一種方法可以對字典的值進行排序,其中值是列表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM