Я хочу иметь возможность добавить атрибут в словарь, но только если условие, которое я передаю, выполняется. Например:

def addSum(num):
    obj = {
             'name': "Home",
              'url': "/",
              num > 0 ? 'data': num
    }

Это возможно? Я не могу найти способ сделать это в Python, я видел только примеры в JavaScript.

2
Demetrius 27 Июн 2019 в 23:08

4 ответа

Лучший ответ

Вы не можете сделать это с таким синтаксисом. Во-первых, вам нужен Python, а не Java / C.

(1) добавьте атрибут, но установите None:

obj = {'name': "Home",
       'url': "/",
       'data': num if num > 0 else None
      }

(2) сделать это дополнение:

obj = {'name': "Home",
       'url': "/"}
if num > 0:
    obj['data'] = num
2
Prune 28 Июн 2019 в 16:41

Просто добавьте / проверьте это в отдельном утверждении:

def addSum(num):
    obj = {
        'name': "Home",
        'url': "/"
    }
    if num > 0: obj['data'] = num
    return obj

print(addSum(3))   # {'name': 'Home', 'url': '/', 'data': 3}
print(addSum(0))   # {'name': 'Home', 'url': '/'}
3
RomanPerekhrest 27 Июн 2019 в 20:12

Да, просто создайте словарь без атрибута, затем создайте оператор if, чтобы добавить его, если условие истинно:

def addSum(num):
    obj = {
          'name': "Home",
          'url': "/",      
    }
    if num > 0:
        obj['data'] = num

    return obj
2
Matt 27 Июн 2019 в 20:13

Создайте словарь без дополнительного элемента, затем добавьте его в оператор if

def addSum(num):
    obj = {
        'name': "Home",
        'url': "/"
    }
    if num > 0:
        obj['data'] = num;
2
Barmar 27 Июн 2019 в 20:12