在下面的列表中的数据:当列表值是字符串时如何在列表理解中使用else?
attri_values = ['gene_id "scaffold_200002.1"', 'gene_version "1"', 'transcript_id "scaffold_200002.1"', 'transcript_version "1"', 'exon_number "2"', 'gene_source "jgi"', 'gene_biotype "protein_coding"', 'transcript_source "jgi"', 'transcript_biotype "protein_coding"', 'exon_id "scaffold_200002.1.exon2"', 'exon_version "1"']
说我想申请一个条件表达式:
gene_id = [x for x in attri_values if 'gene_id' in x]
# But, when there is not list values with 'gene_id' I would like to return NA (string type) but not an empty list, but I am being unsuccessful
gene_name = [x if 'gene_name' in x else 'NA' for x in attri_values]
print(gene_name) #gives me
['NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA']
# I only want one 'NA' in string format.
我试着写在不同的点别的条件。我也尝试了stackE的几个例子,但没有成功。
if else in a list comprehension
if/else in Python's list comprehension?
感谢,
当您尝试使用'else'时会出现什么错误? –
你能不能把它转换成'set'?像'gene_name = list(set([x if'gene_name'in x else'NA'for x in attri_values])' – roganjosh
我没有收到我所尝试的错误,但我也没有得到确切的我想要的东西。,我也试过lambda。我可以运行for循环工作这个问题,但想学习一个非常好的和干净的方法来解决这个问题。我尝试了几个旧帖子的例子,迄今为止没有成功。 – everestial007