>source

목록 이해력과 pydash를 사용하여 키로 특정 JSON 값을 찾으려고합니다. 나는 그 일을 할 수있는 여러 가지 방법이 있다는 것을 알고 있지만, 그것을 사용하는 것이 더 구체적입니다.목록 이해 목록이건...에 나는 code 스 니펫 아래를 시도했다.지독한반복하지만하지만 아닙니다명부되풀이.

import pydash as py_
data= {
  "P1": "ss",
  "P2": {
      "P1": "cccc"
  },
  "P3": [
      {
          "P1": "aaa"
      }
  ]
}
def findall(v, k):
    if type(v) is list:
        [findall(i,k) for i in v]
    a= [py_.get(v,k)]+[findall(py_.get(v, k1), k) for k1 in v if type(v)== type({})]
    return(a)
refs_= findall(data, 'P1')
refs_d= py_.compact(py_.chain(refs_).
         flatten_deep().
         value())
print(refs_d)

유형 (v)== 유형 ({})과 같은 일을하는 이유는 무엇입니까? 유형 (v)은 목록 ...이 될 수 있다는 것을 분명히 이해합니다 .... 더욱 특극적으로 미묘한 차이가 있지만 isIsInstance를 사용해야합니다.

juanpa.arrivillaga2021-05-12 06:29:16

어쨌든, 당신의 주요 문제는 유형 (v)가 목록에있을 때 아무 것도하지 않는다고 생각합니다. 목록을 만들고 폐기하십시오. 아마도 당신은 내가 v에있는 [findall (i, k)을 반환 할 수 있었지만 code가 무엇을 해야하는지 실제로 설명하지 않았습니다.

juanpa.arrivillaga2021-05-12 06:29:16

예 반환 [FindAll (i, k) v] 실수를 한 곳에서 그게 뭐야.

curiousguy2021-05-12 06:29:16
  • 이전 assembly : 비 등록기로 만든 CMP 명령 [중복]
  • 다음 sql : 왼쪽 외부 조인은 테이블이 모두 null 값을 갖는 경우 제외되지 않습니다.