2016-11-12 103 views
0

我有一个元组列表不支持类型错误:解码STR在遍历元组的Python列表

a = [('BC', 'CONTAINS'), ('CD', 'FREE_FROM'), ('BM', 'CONTAINS') , ('ZZ', nan), (nan, nan), (nan, 'FREE_FROM'), (nan, nan)] 

我想它不包含任何楠也不含元素第二列表元组的元素是“FREE_FROM”这样的结果列表如下所示:

res = [('BC', 'CONTAINS'), ('BM', 'CONTAINS')] 

目前,我这样做是这样的:

res = [(x,y) for x,y in containsAllergen if (str(x,y) != ('nan', 'nan') or str(y) != 'FREE_FROM')] 

但它扔在主题中提到的错误:

TypeError: decoding str is not supported 

有什么建议?谢谢。

+0

什么类型是'''''''''? – wwii

回答

2

我认为错误是:

str(x,y) 

在旁边,我想你会需要“和”经营者生产您需要的结果:

res = [(x,y) for x,y in a if (str(x) != 'nan' and str(y) != 'nan' and str(y) != 'FREE_FROM')] 
0

使用in操作者检查为nan和使用operator.itemgetter提取第二个项目作比较。

>>> import operator 
>>> a = [('BC', 'CONTAINS'), ('CD', 'FREE_FROM'), ('BM', 'CONTAINS') , ('ZZ', nan), (nan, nan), (nan, 'FREE_FROM'), (nan, nan)] 
>>> second_item = operator.itemgetter(1) 
>>> [t for t in a if second_item(t) != 'FREE_FROM' and nan not in t] 
[('BC', 'CONTAINS'), ('BM', 'CONTAINS')] 
>>>