2013-08-08 4 views
0

저는 파이썬에 익숙하지 않고 아래의 파이썬 코드에서 변수를 조건부로 추가하는 방법에 대해 궁금해하고있었습니다. 다른 NOT NULL not.How이 그것 할 경우 내가 "custom"Fields:customFields을 원하는 예를 들어처럼변수를 조건부로 파이썬 코드에 추가

requestBody = json.dumps({"accountId":accountId, 
     "emailSubject":customData.emailSubject, 
     "emailBlurb":customData.emailBlurb, 
     "customFields":customFields, 
     "status":customData.status, 
     "messageLock":customData.messageLock}) 

만 포함 할 ??

답변

2

사전을 만든 다음 키를 추가 한 다음 덤프하십시오. 이 일을하는 일반적인 방법은 각 키에 대해 다른 로직을 사용할 수있게합니다 (예 : 주어진 키가 > 10 인 경우).

to_json = {"accountId":accountId, 
    "emailSubject":customData.emailSubject, 
    "emailBlurb":customData.emailBlurb, 
    "customFields":customFields, 
    "status":customData.status, 
    "messageLock":customData.messageLock} 

if james is not None: 
    to_json['james'] = james 

requestBody = json.dumps(to_json) 
2

사용 DICT 이해 :

requestBody = json.dumps({key: value for key, value in [ 
     ("accountId",accountId), 
     ("emailSubject",customData.emailSubject), 
     ("emailBlurb",customData.emailBlurb), 
     ("customFields",customFields), 
     ("status",customData.status), 
     ("messageLock",customData.messageLock),] if value is not None}) 

한 줄 확장 :

pairs = [ 
    ("accountId", accountId), 
    ("emailSubject", customData.emailSubject), 
    ("emailBlurb", customData.emailBlurb), 
    ("customFields", customFields), 
    ("status", customData.status), 
    ("messageLock", customData.messageLock), 
]: 

d = {} 
for key, value in pairs: 
    if value is not None: 
     d[key] = value 

requestBody = json.dumps(d) 
+0

어떤 값 인 경우 '0'? 분명히'is None'으로 확인하십시오. 그러나 영리 할 때는 언제나 충분히 영리해야합니다. 그렇지 않으면 버그가있는 단 하나의 강자를 위험에 빠뜨릴 수 있습니다. – Joe

+0

@Joe, 코드를 업데이트했습니다. 감사합니다. – falsetru

관련 문제