2016-10-04 4 views
0

Это мой код, где создается словарь:Условно добавить значения в словарь

for table in get_json(): 
    updated_user_dict = { 
     "email": table['email'], 
     "company": table['company'], 
     "userinfo": if args.u: 
      [update_user(dic, ssh_session) 
      for dic in table['userinfo']] 
    } 

Я только хочу добавить:

[update_user(dic, ssh_session) 
      for dic in table['userinfo']] 

если args.u является True. Если у меня есть, например, args.c, я хочу добавить что-то еще в userinfo.

Возможно ли это в Python?

ответ

0

Ключи и значения в словарном литерале могут быть любым выражением, поскольку такое условное выражение может быть легко использовано.

Вам просто нужно быть осторожным, как вы вводите его, значения идут первыми, а кортежи в понимании всегда должны иметь круглые скобки.

Образец Пример условного для значения словаря:

condition = False  
d = {1: [('a', 'a') for _ in range(2)] if condition else [('b','b') for _ in range(2)]} 

condition является False поэтому d инициализируется [('b','b') for _ in range(2)]:

{1: [('b', 'b'), ('b', 'b')]} 

С двумя if условия:

d = {1: [('a', 'a') for _ in range(2)] if condition else [('b','b') for _ in range(2)] if condition else ('c', 'c')} 

condition новый товар False поэтому ('c', 'c') б/у и d сейчас: {1: ('c', 'c')}.

Замените arg.u и arg.c и значения, которые вам понадобятся аналогичным образом.

Если количество условий, которые необходимо изучить, не слишком велико, инициализируйте в словаре литерал условное выражение. Если нет, было бы более удобно использовать отдельные операторы if-elif-else.

Смежные вопросы