作者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