Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当主键不规则时,如何从JSON中提取数据?_Python_Json - Fatal编程技术网

Python 当主键不规则时,如何从JSON中提取数据?

Python 当主键不规则时,如何从JSON中提取数据?,python,json,Python,Json,几个小时以来,我一直在想如何从这个文件中提取数据。通常,您可以使用for循环遍历键。但由于“主键”是不规则的,即日期。我如何访问所有数据?我希望能够提取所有“1.打开”值并将它们放入数组中,而不必手动输入日期作为键 我试着实现一个日历循环系统,在这个系统中选择开始日期和结束日期,然后使用这个波动的变量作为键,但我觉得这太过分了 { "2020-02-06": { "1. open": "699.9200", "2. high": "795.8300", "3. low

几个小时以来,我一直在想如何从这个文件中提取数据。通常,您可以使用for循环遍历键。但由于“主键”是不规则的,即日期。我如何访问所有数据?我希望能够提取所有
“1.打开”
值并将它们放入数组中,而不必手动输入日期作为键

我试着实现一个日历循环系统,在这个系统中选择开始日期和结束日期,然后使用这个波动的变量作为键,但我觉得这太过分了

{
  "2020-02-06": {
    "1. open": "699.9200",
    "2. high": "795.8300",
    "3. low": "687.0000",
    "4. close": "748.9600",
    "5. volume": "39647744"
  },
  "2020-02-05": {
    "1. open": "823.2600",
    "2. high": "845.9800",
    "3. low": "704.1106",
    "4. close": "734.7000",
    "5. volume": "48423837"
  },
  "2020-02-04": {
    "1. open": "882.9600",
    "2. high": "968.9899",
    "3. low": "833.8800",
    "4. close": "887.0600",
    "5. volume": "60938758"
  },
  "2020-02-03": {
    "1. open": "673.6900",
    "2. high": "786.1400",
    "3. low": "673.5200",
    "4. close": "780.0000",
    "5. volume": "47233495"
  },

你有一大堆口述

你可以像这样绕过去

for d, quotes in data.items():
   print('Quotes for day {} are {}'.format(d, quotes))
我希望能够提取所有“1.open”值并将它们放入数组中,而不必手动输入日期作为键

在dict中的每个键上循环

open_quotes = [data[x]["1. open"] for x in data]
你是说像这样

>>> d = {
  "2020-02-06": {
    "1. open": "699.9200",
    "2. high": "795.8300",
    "3. low": "687.0000",
    "4. close": "748.9600",
    "5. volume": "39647744"
  },
  "2020-02-05": {
    "1. open": "823.2600",
    "2. high": "845.9800",
    "3. low": "704.1106",
    "4. close": "734.7000",
    "5. volume": "48423837"
  },
  "2020-02-04": {
    "1. open": "882.9600",
    "2. high": "968.9899",
    "3. low": "833.8800",
    "4. close": "887.0600",
    "5. volume": "60938758"
  },
  "2020-02-03": {
    "1. open": "673.6900",
    "2. high": "786.1400",
    "3. low": "673.5200",
    "4. close": "780.0000",
    "5. volume": "47233495"
  }}

>>> open_list = [d[date]["1. open"] for date in d.keys()]
>>> open_list
['699.9200', '823.2600', '882.9600', '673.6900']


你可以在键/值上循环。如果你能展示你的尝试,这会很有用…这能回答你的问题吗?我以前也有过这样的经历。我设法列出所有的“日期/键”,然后列出它们各自包含“1.打开”的dict。但是,我无法提取特定的数据。所有我得到的是:日期:2019-09-23数据:{'1.开放':'240.0000','2.高':'245.1794','3.低':'239.2200','4.关闭':'241.2300','5.卷':'4391630'}我是一个初学者,我尝试使用您提供的底层代码,我得到了以下错误:open_引号=[x[“1.开放”]表示数据中的x]类型错误:字符串索引必须是整数