如何按嵌套值对字典进行排序?

时间:2021-06-02 17:24:17

标签: python json sorting dictionary nested

我将股票数据存储在如下所示的 JSON 文件中:

{
  "06/01/2021 18:41:02": {
    "NASDAQ-BYND": {
      "Sell": "6",
      "Neutral": "9",
      "Buy": "11"
    },
    "NYSE-CCL": {
      "Sell": "3",
      "Neutral": "8",
      "Buy": "15"
    },
    "NASDAQ-NVDA": {
      "Sell": "2",
      "Neutral": "8",
      "Buy": "16"
    },
    "NASDAQ-TQQQ": {
      "Sell": "2",
      "Neutral": "8",
      "Buy": "16"
    }
  }
}

我正在尝试按 'Buy' 值对字典进行排序,以便我的结果如下所示:

{
    "NASDAQ-NVDA": {
      "Sell": "2",
      "Neutral": "8",
      "Buy": "16"
    },
    "NASDAQ-TQQQ": {
      "Sell": "2",
      "Neutral": "8",
      "Buy": "16"
    },
    "NYSE-CCL": {
      "Sell": "3",
      "Neutral": "8",
      "Buy": "15"
    },
    "NASDAQ-BYND": {
      "Sell": "6",
      "Neutral": "9",
      "Buy": "11"
    }
}

我的代码目前是这样的:

with open("/dayData.json", 'r') as day:
    data = json.load(day)
    keys = list(data)

print(sorted(data[keys[len(keys)-1]].items(), key = lambda x: x[1]['Buy'])

我将初始键存储在 keys 变量中的原因是原始 JSON 文件非常大,我只想从最后一个日期条目中获取数据。调用 list(data) 只返回所有日期的初始父键。 运行上面代码的结果:

{
  "NASDAQ-BYND": { "Sell": "6", "Neutral": "9", "Buy": "11" },
  "NYSE-CCL": { "Sell": "3", "Neutral": "8", "Buy": "15" },
  "NASDAQ-NVDA": { "Sell": "2", "Neutral": "8", "Buy": "16" },
  "NASDAQ-TQQQ": { "Sell": "2", "Neutral": "8", "Buy": "16" },
  "NYSE-AMC": { "Sell": "1", "Neutral": "9", "Buy": "16" },
  "NASDAQ-AMZN": { "Sell": "14", "Neutral": "10", "Buy": "2" },
  "NASDAQ-AAPL": { "Sell": "13", "Neutral": "10", "Buy": "3" },
  "NASDAQ-COIN": { "Sell": "7", "Neutral": "7", "Buy": "3" },
  "NASDAQ-MARA": { "Sell": "10", "Neutral": "9", "Buy": "7" },
  "NASDAQ-TSLA": { "Sell": "9", "Neutral": "8", "Buy": "9" }
}

我做错了什么或需要知道什么?

0 个答案:

没有答案