>

아래 내용에서 "이름"유효성 검사에 따라 "a_id"값과 "b_id"값을 얻는 방법

[
{
    "name": "name1",
    "a_id": "12345",
    "b_id": "0d687c94c5f4"
},
{
    "name": "name2",
    "a_id": "67890",
    "b_id": "0d687c94c5f4"
},
{
    "name": "name3",
    "a_id": "23857",
    "b_id": "9ec34be3d535"
},
{
    "name": "name4",
    "a_id": "84596",
    "b_id": "9ec34be3d535"
},
{
    "name": "name5",
    "a_id": "d82ebe9815cc",
    "b_id": null
}

]

저는 두 가지 값에 사용했습니다

{result['a_id']: result['name'] for result in data}

그러나 세 번째 가치의 경우 이와 같이 사용하면이 작업을 수행 할 수 없습니다.

{result['a_id']: result['name'], result['b_id']: result['name'] for result in data}

올바른 구문은 무엇입니까?

  • 답변 # 1

    중첩 된 루프가있는dict comprehension이 트릭을 수행해야한다고 생각합니다 :

    data = {result[k] : result['name'] for result in data for k in ('a_id', 'b_id')}
    
    

    원하는만큼 키를 추가 할 수 있습니다. 더 이해가된다면 변수 keys 에서 외부에 키를 선언하십시오. :

    keys = ('a_id', 'b_id', ...)
    data = {result[k] : result['name'] for result in data for k in keys}
    
    

  • 이전 java awt - mousedragged 이벤트 후 어떤 마우스 버튼이 해제되었는지 확인하는 방법?
  • 다음 excel - WorkbookActiveSheet에서 런타임 오류 9 (첨자가 범위를 벗어남)