繁体   English   中英

如何使用Python组合来自不同数组的JSON对象

[英]How to Combine JSON Objects From Different Arrays With Python

我试图使用Python遍历不同的JSON数组,以便将所有对象组合成一个数据结构。 JSON如下所示:

data = {
  "Wednesday, Apr 3, 2019": [
    {
      "id": "000",
      "keyid": "4273666087",
      "name": "Raptor",
      "symbol": "RPT",
    },
    {
      "id": "111",
      "keyid": "1818114564",
      "name": "Duck",
      "symbol": "DUK",
    }
  ],
  "Tuesday, Apr 2, 2019": [
    {
      "id": "222",
      "keyid": "8032408148",
      "name": "Hawk",
      "symbol": "HWK",
    },
    {
      "id": "333",
      "keyid": "0362766431",
      "name": "Goose",
      "symbol": "GOO",
    }
  ]
}

由于它看起来像字典,因此我尝试执行以下操作:

for item in data.values():
   print(item)
   print("\n")

它将每个数组的对象组合到一个单独的列表中。 但是我希望所有对象都成为同一数据结构的一部分,以使最终结果看起来像这样:

id  | keyid      | name   | symbol
-----------------------------------
000 | 4273666087 | Raptor | RPT
-----------------------------------
111 | 1818114564 | Duck   | DUK
-----------------------------------
222 | 8032408148 | Hawk   | HWK
-----------------------------------
333 | 0362766431 | Goose  | GOO
-----------------------------------

最好的方法是什么?

使用pandas

import pandas as pd
df = pd.DataFrame([x for k,v in data.items() for x in v])
print(df)

输出:

    id       keyid    name symbol
0  000  4273666087  Raptor    RPT
1  111  1818114564    Duck    DUK
2  222  8032408148    Hawk    HWK
3  333  0362766431   Goose    GOO

您可以使用常规Python来做到这一点,但这将是一个很大的麻烦,因此我支持使用可以一行完成的pandas

如要嵌套循环:

import pandas as pd
l = []
for k,v in data.items():
    for x in v:
        l.append(x)
df = pd.DataFrame(l)
print(df)

你很亲密 您想进一步,并打印每一行的值。

print("id", "keyid\t", "name", "symbol", sep='\t|')

for group in data.values():
    for row in group:
        print("\t|".join([str(i) for i in row.values()]))

生产:

id      |keyid          |name   |symbol
000     |4273666087     |Raptor |RPT
111     |1818114564     |Duck   |DUK
222     |8032408148     |Hawk   |HWK
333     |0362766431     |Goose  |GOO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM