【问题标题】:How to get top 10 items from a nested json file using python?如何使用 python 从嵌套的 json 文件中获取前 10 项?
【发布时间】:2020-09-03 19:01:30
【问题描述】:

下面是json文件数据:

 {
        "a": [
            {
                "incl": "34.86"
            },
            {
                "excl": "34.86"
            },
            {
                "m": "tb"
            },
            ...
        ]
        "b": [
            {
                "incl": "24.86"
            },
            {
                "excl": "14.86"
            },
            ...
        ]
      ...
    }

这是一个json文件的例子,

我想通过incl或excl获得top n item(例如,“a”,“b”),怎么做?

谢谢

【问题讨论】:

  • 请分享您到目前为止尝试过的代码
  • 请从intro tour 重复how to ask。 Stack Overflow 不是编码或设计服务——我们希望您做出初步尝试。
  • 谢谢,我认为作为公认的答案,x 是我不确定的。
  • @shenmufeng 如果您了解更多关于 lambda 函数的信息,那就太好了

标签: python json sorting


【解决方案1】:

我们在这里使用sorted(),它以所需的顺序返回一个键列表。
对于incl 的顶部n 键:

sorted(d , key = lambda x: d[x][0]['incl'],reverse = True)[:n] # n = 10

excl 的顶部 n 键:

sorted(d , key = lambda x: d[x][0]['excl'],reverse = True)[:n]

注意:

  • 这里d是json

如果结构可以变化,例如inclexcl 的顺序不同:

sorted(d , key = lambda x: [i['incl'] for i in d[x] if 'incl' in i] , reverse = True)
sorted(d , key = lambda x: [i['excl'] for i in d[x] if 'excl' in i] , reverse = True)

【讨论】:

  • result = sorted(items, key=lambda i: items[i]['id'], reverse = True)[:8] TypeError: list indices must be integers or slices, not dict
猜你喜欢
  • 2018-12-18
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
相关资源
最近更新 更多