作者tumc (HIHIHI)
看板Python
標題[問題] None + string
時間Wed Aug 5 17:57:57 2009
由於習慣寫perl,因此現在在使用python,常會被一些較嚴謹的資料型態搞得一個頭兩個大
今天遇到一個問題: b = a['1'] + a['2'] + ... + a['100']
其中 a['i'] 有可能是None
如果是None,則由於string object與None object無法做"+"的運算,會出現錯誤
請問有什麼好方法避掉這錯誤嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.124.185.18
1F:→ yungyuc:''.join([a['%d'%i] for i in range(1,101) if a['%d'%i] 08/05 18:37
2F:→ yungyuc:!=None]) 08/05 18:37
3F:→ yungyuc:如果你的 a 是 list 而不是 dict 的話比較方便 08/05 18:38
4F:→ yungyuc:''.join(item for item in a if item != None) 08/05 18:39
5F:→ yungyuc:變成可以用 generator 08/05 18:39
6F:→ yungyuc:hmmm... 錯了,原本的也可以用 generator 08/05 18:40
7F:→ yungyuc:但 list 的 code 比較短 08/05 18:40
8F:→ sbrhsieh:''.join(a[str(x)] or '' for x in xrange(1, 101)) 08/05 22:33
9F:推 giveatry:要不要當初寫進dict時就回傳""而不是none? 08/05 22:52
10F:→ tumc:我再問一下,dict有沒有method是可以遇到value是None,就回傳"" 08/05 23:02
11F:推 buganini:自己寫個class? 08/06 00:09
12F:推 dotwsc:推 sbrhsieh, 直接用 or 就可以了 ^^ 08/06 01:12