[問題] None + string

看板Python作者 (HIHIHI)時間16年前 (2009/08/05 17:57), 編輯推噓3(309)
留言12則, 6人參與, 最新討論串1/1
由於習慣寫perl,因此現在在使用python,常會被一些較嚴謹的資料型態搞得一個頭兩個大 今天遇到一個問題: b = a['1'] + a['2'] + ... + a['100'] 其中 a['i'] 有可能是None 如果是None,則由於string object與None object無法做"+"的運算,會出現錯誤 請問有什麼好方法避掉這錯誤嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.185.18

08/05 18:37, , 1F
''.join([a['%d'%i] for i in range(1,101) if a['%d'%i]
08/05 18:37, 1F

08/05 18:37, , 2F
!=None])
08/05 18:37, 2F

08/05 18:38, , 3F
如果你的 a 是 list 而不是 dict 的話比較方便
08/05 18:38, 3F

08/05 18:39, , 4F
''.join(item for item in a if item != None)
08/05 18:39, 4F

08/05 18:39, , 5F
變成可以用 generator
08/05 18:39, 5F

08/05 18:40, , 6F
hmmm... 錯了,原本的也可以用 generator
08/05 18:40, 6F

08/05 18:40, , 7F
但 list 的 code 比較短
08/05 18:40, 7F

08/05 22:33, , 8F
''.join(a[str(x)] or '' for x in xrange(1, 101))
08/05 22:33, 8F

08/05 22:52, , 9F
要不要當初寫進dict時就回傳""而不是none?
08/05 22:52, 9F

08/05 23:02, , 10F
我再問一下,dict有沒有method是可以遇到value是None,就回傳""
08/05 23:02, 10F

08/06 00:09, , 11F
自己寫個class?
08/06 00:09, 11F

08/06 01:12, , 12F
推 sbrhsieh, 直接用 or 就可以了 ^^
08/06 01:12, 12F
文章代碼(AID): #1AULUceD (Python)
文章代碼(AID): #1AULUceD (Python)