2016-10-04 73 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.uTrue。如果我有,例如,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因此Falsed被初始化[('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.uarg.c替代您需要的值並採用類似的方式。

如果您需要檢查的條件數量不是很大,請使用條件表達式在字典文本中進行初始化。如果不是,則使用單獨的if-elif-else語句更具可讀性。