Python与R的fromJSON()、unlist()、attr()等价的函数?

2024-10-01 15:36:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我用R写了一段代码,但它不能容纳我的繁重文件,所以我改用Python。但我一直在寻找3个Python的R等价函数,并没有找到任何令人满意的结果。你知道吗

3R功能包括:

fromJSON()
unlist()
attr()

好的,让我给你们看我的问题,我给你们看我在R中做了什么,得到了什么,现在我想在Python中做同样的事情。你知道吗

json_file <- '[
  {
    "id": "haha",
    "type": "table",
    "A": "HKD",
    "B": "HKD",
    "C": "HKD",
    "V": "HKD",
    "composition": [
      {
        "id": "AO",
        "type": "panier"
      },
      {
        "id": "KK",
        "type": "basket",
        "isAutoDiv": false,
        "composition": [
          {
            "id": "600",
            "type": "apple",
            "number": 1.11
          },
          {
            "id": "605",
            "type": "peach",
            "number": 1.79
          }
        ]
      },
      {
        "id": "KL",
        "type": "basket"
      }
    ]
  },
  {
    "id": "hoho",
    "type": "table",
    "composition": [
      {
        "id": "KT",
        "type": "panier"
      },
      {
        "id": "OT",
        "type": "panier"
      },
      {
        "id": "CL",
        "type": "basket",
        "isAutoDiv": false,
        "composition": [
          {
            "id": "450",
            "type": "apple"
          },
            {
            "id": "630",
            "type": "orange"
          },
          {
            "id": "023",
            "type": "orange",
            "composition": [
              {
                "id": "AOOOOOOO",
                "type": "orangejuice"
              },
              {
                "id": "VMVMVMVMV",
                "type": "orangejuice"
              }
            ]
          }
        ]
      }
    ]
  }
]'

现在我要做的是: 一:

nestedjson <- fromJSON(json_file)

我可以得到:

[[1]]
[[1]]$id
[1] "haha"

[[1]]$type
[1] "table"

[[1]]$A
[1] "HKD"

[[1]]$B
[1] "HKD"

[[1]]$C
[1] "HKD"

[[1]]$V
[1] "HKD"

[[1]]$composition
[[1]]$composition[[1]]
[[1]]$composition[[1]]$id
[1] "AO"

[[1]]$composition[[1]]$type
[1] "panier"


[[1]]$composition[[2]]
[[1]]$composition[[2]]$id
[1] "KK"

[[1]]$composition[[2]]$type
[1] "basket"

[[1]]$composition[[2]]$isAutoDiv
[1] FALSE

[[1]]$composition[[2]]$composition
[[1]]$composition[[2]]$composition[[1]]
[[1]]$composition[[2]]$composition[[1]]$id
[1] "600"

[[1]]$composition[[2]]$composition[[1]]$type
[1] "apple"

[[1]]$composition[[2]]$composition[[1]]$number
[1] 1.11


[[1]]$composition[[2]]$composition[[2]]
[[1]]$composition[[2]]$composition[[2]]$id
[1] "605"

[[1]]$composition[[2]]$composition[[2]]$type
[1] "peach"

[[1]]$composition[[2]]$composition[[2]]$number
[1] 1.79




[[1]]$composition[[3]]
[[1]]$composition[[3]]$id
[1] "KL"

[[1]]$composition[[3]]$type
[1] "basket"




[[2]]
[[2]]$id
[1] "hoho"

[[2]]$type
[1] "table"

[[2]]$composition
[[2]]$composition[[1]]
[[2]]$composition[[1]]$id
[1] "KT"

[[2]]$composition[[1]]$type
[1] "panier"


[[2]]$composition[[2]]
[[2]]$composition[[2]]$id
[1] "OT"

[[2]]$composition[[2]]$type
[1] "panier"


[[2]]$composition[[3]]
[[2]]$composition[[3]]$id
[1] "CL"

[[2]]$composition[[3]]$type
[1] "basket"

[[2]]$composition[[3]]$isAutoDiv
[1] FALSE

[[2]]$composition[[3]]$composition
[[2]]$composition[[3]]$composition[[1]]
[[2]]$composition[[3]]$composition[[1]]$id
[1] "450"

[[2]]$composition[[3]]$composition[[1]]$type
[1] "apple"


[[2]]$composition[[3]]$composition[[2]]
[[2]]$composition[[3]]$composition[[2]]$id
[1] "630"

[[2]]$composition[[3]]$composition[[2]]$type
[1] "orange"


[[2]]$composition[[3]]$composition[[3]]
[[2]]$composition[[3]]$composition[[3]]$id
[1] "023"

[[2]]$composition[[3]]$composition[[3]]$type
[1] "orange"

[[2]]$composition[[3]]$composition[[3]]$composition
[[2]]$composition[[3]]$composition[[3]]$composition[[1]]
[[2]]$composition[[3]]$composition[[3]]$composition[[1]]$id
[1] "AOOOOOOO"

[[2]]$composition[[3]]$composition[[3]]$composition[[1]]$type
[1] "orangejuice"


[[2]]$composition[[3]]$composition[[3]]$composition[[2]]
[[2]]$composition[[3]]$composition[[3]]$composition[[2]]$id
[1] "VMVMVMVMV"

[[2]]$composition[[3]]$composition[[3]]$composition[[2]]$type
[1] "orangejuice"

然后我做这个2:

unnestedjson <- unlist(nestedjson) 

我可以得到:


   id 
                                  "haha" 
                                    type 
                                 "table" 
                                       A 
                                   "HKD" 
                                       B 
                                   "HKD" 
                                       C 
                                   "HKD" 
                                       V 
                                   "HKD" 
                          composition.id 
                                    "AO" 
                        composition.type 
                                "panier" 
                          composition.id 
                                    "KK" 
                        composition.type 
                                "basket" 
                   composition.isAutoDiv 
                                 "FALSE" 
              composition.composition.id 
                                   "600" 
            composition.composition.type 
                                 "apple" 
          composition.composition.number 
                                  "1.11" 
              composition.composition.id 
                                   "605" 
            composition.composition.type 
                                 "peach" 
          composition.composition.number 
                                  "1.79" 
                          composition.id 
                                    "KL" 
                        composition.type 
                                "basket" 
                                      id 
                                  "hoho" 
                                    type 
                                 "table" 
                          composition.id 
                                    "KT" 
                        composition.type 
                                "panier" 
                          composition.id 
                                    "OT" 
                        composition.type 
                                "panier" 
                          composition.id 
                                    "CL" 
                        composition.type 
                                "basket" 
                   composition.isAutoDiv 
                                 "FALSE" 
              composition.composition.id 
                                   "450" 
            composition.composition.type 
                                 "apple" 
              composition.composition.id 
                                   "630" 
            composition.composition.type 
                                "orange" 
              composition.composition.id 
                                   "023" 
            composition.composition.type 
                                "orange" 
  composition.composition.composition.id 
                              "AOOOOOOO" 
composition.composition.composition.type 
                           "orangejuice" 
  composition.composition.composition.id 
                             "VMVMVMVMV" 
composition.composition.composition.type 
                           "orangejuice" 

最后我做了3个:

unnestednames <- attr(unnestedjson, "names") 

我可以得到以下结果: 这就是我想要的Python代码: 一个名称列表,其中包含“composition.”的属性的名称可以显示属性处于哪个级别。

例如,第二个嵌套级别的属性的名称为“组成.类型,第4嵌套级别的属性的名称为成分。成分。成分.id”。你知道吗

[1] "id"                                      
 [2] "type"                                    
 [3] "A"                                       
 [4] "B"                                       
 [5] "C"                                       
 [6] "V"                                       
 [7] "composition.id"                          
 [8] "composition.type"                        
 [9] "composition.id"                          
[10] "composition.type"                        
[11] "composition.isAutoDiv"                   
[12] "composition.composition.id"              
[13] "composition.composition.type"            
[14] "composition.composition.number"          
[15] "composition.composition.id"              
[16] "composition.composition.type"            
[17] "composition.composition.number"          
[18] "composition.id"                          
[19] "composition.type"                        
[20] "id"                                      
[21] "type"                                    
[22] "composition.id"                          
[23] "composition.type"                        
[24] "composition.id"                          
[25] "composition.type"                        
[26] "composition.id"                          
[27] "composition.type"                        
[28] "composition.isAutoDiv"                   
[29] "composition.composition.id"              
[30] "composition.composition.type"            
[31] "composition.composition.id"              
[32] "composition.composition.type"            
[33] "composition.composition.id"              
[34] "composition.composition.type"            
[35] "composition.composition.composition.id"  
[36] "composition.composition.composition.type"
[37] "composition.composition.composition.id"  
[38] "composition.composition.composition.type"

我一直在寻找一些Python函数,它们做同样的事情,但是没有找到任何东西。如果你有任何想法在Python中做这些,那将解决我的大问题!你知道吗

非常感谢!你知道吗


Tags: 名称idfalsenumberapple属性typetable

热门问题