【问题标题】:How to sort list inside dict in Python?如何在 Python 中对 dict 中的列表进行排序?
【发布时间】:2016-01-21 06:23:21
【问题描述】:

我正在尝试按字母顺序对 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 输出中打印出来。

【问题讨论】:

  • 什么方法?我在 django 模板输出中打印为 json。
  • ...sort 方法。

标签: python list sorting dictionary alphabetical


【解决方案1】:

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

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

【讨论】:

  • 我赞成并接受了您的回答。我不知道还有谁干的。
【解决方案2】:

不确定您的 sn-ps 中是否有错字,但这是对字典值进行排序的一种方法,其中值是列表:

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

【讨论】:

  • 更具体地说,这会产生一个 new 字典,其中值列表已排序。这可能是也可能不是我们想要的。
  • 嗯,我想这需要提问者的澄清。 :|
  • @AlexReynolds,你的回答对我有点帮助。但另一个答案是完美的。无论如何,谢谢你帮助我。 :D 我真的很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多