【问题标题】:[Python]How to order the value of json array[Python]如何对json数组的值进行排序
【发布时间】:2016-12-01 23:03:46
【问题描述】:

我有一个这样的 json 数组

[{'n0': 16}, {'n2': 6}, {'n3': 1}, {'n4': 1}, {'n5': 11}, {'n6': 2}, {'n7': 6}]

我如何订购这个取决于 nX 的值?

【问题讨论】:

  • 它不工作,我该怎么办? @KenjiNoguchi
  • print(sorted(data, key=lambda e: list(e.values())[0])) 输出为[{'n3': 1}, {'n4': 1}, {'n6': 2}, {'n2': 6}, {'n7': 6}, {'n5': 11}, {'n0': 16}]
  • 排序的(d, key=lambda x:list(x.items())[0][0][1])
  • 根据您的上下文,这也可能有用:[(k,v) for di in d for (k,v) in sorted(di.items(), key=lambda x:x[0][1])]

标签: python arrays json


【解决方案1】:

你在这里:

   def getkey(item):
      return int(item.keys()[0][1:])

    def compare(a,b):
      k1,k2=getkey(a),getkey(b)
      if k1 == k2 :
        return 0
      return -1 if k1 <k2 else 1

    print l 

    l.sort(compare)

.. 列表已排序。

【讨论】:

    【解决方案2】:

    使用 python sorted 函数与键

    lst = [{'n0': 16}, {'n2': 6}, {'n3': 1}, {'n4': 1}, {'n5': 11}, {'n6': 2}, {'n7': 6}]
    new_lst = sorted(lst, key=lambda x:x.values()[0])
    # [{'n3': 1}, {'n4': 1}, {'n6': 2}, {'n2': 6}, {'n7': 6}, {'n5': 11}, {'n0': 16}]
    

    如果您想在不创建新列表的情况下对列表进行排序,请使用 list sort 方法

    lst = [{'n0': 16}, {'n2': 6}, {'n3': 1}, {'n4': 1}, {'n5': 11}, {'n6': 2}, {'n7': 6}]
    lst.sort(key=lambda x:x.values()[0])
    # [{'n3': 1}, {'n4': 1}, {'n6': 2}, {'n2': 6}, {'n7': 6}, {'n5': 11}, {'n0': 16}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      相关资源
      最近更新 更多