본문 바로가기
파이썬

파이썬 조건이 충족되는 경우에만 dict에 추가

by º기록 2021. 1. 27.
반응형

웹 POST 매개 변수를 빌드하기 위해 urllib.urlencode 를 사용하고 있지만 None 이외의 값이 존재하는 경우에만 추가하고 싶은 값이 몇 가지 있습니다.

apple = 'green'
orange = 'orange'
params = urllib.urlencode({
    'apple': apple,
    'orange': orange
})

잘 작동하지만 orange 변수를 선택 사항으로 설정하면 매개 변수에 추가되지 않도록하려면 어떻게해야합니까? 다음과 같은 것 (의사 코드) :

apple = 'green'
orange = None
params = urllib.urlencode({
    'apple': apple,
    if orange: 'orange': orange
})

나는 이것이 충분히 명확하기를 바랍니다. 누구든지 이것을 해결하는 방법을 알고 있습니까?

 

해결 방법

 

초기 dict 를 만든 후 키를 별도로 추가해야합니다.

params = {'apple': apple}
if orange is not None:
    params['orange'] = orange
params = urllib.urlencode(params)

파이썬에는 키를 조건부로 정의하는 구문이 없습니다. 이미 모든 것을 순서대로 가지고 있다면 사전 이해력을 사용할 수 있습니다.

params = urllib.urlencode({k: v for k, v in (('orange', orange), ('apple', apple)) if v is not None})

그러나 그것은 매우 읽기 어렵습니다.


params = urllib.urlencode({
    'apple': apple,
    **({'orange': orange} if orange is not None else {})
})


 

참조 페이지 https://stackoverflow.com/questions/14263872

 

 

반응형

댓글