iJade
iJade

Reputation: 23791

add a variable conditionally in python code

I am new to python and was wondering in the below python code how to add a variable conditionally.

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

Like for example i want "custom"Fields:customFields only to be included if its not null else not.How to do this??

Upvotes: 0

Views: 1769

Answers (2)

Joe
Joe

Reputation: 47609

Create a dictionary and then add keys to it, then dump it. This general way of doing things allows you to use different logic for each key (e.g. if a given key is > 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)

Upvotes: 2

falsetru
falsetru

Reputation: 368894

Using dict comprehension:

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})

One-liner expanded:

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)

Upvotes: 2

Related Questions