2016-08-01 54 views
0

我有一个需要被转换成一个元组Python列表,我还需要添加一个额外的检查,检查列表元素类型并将它们转换成元组多,如果在列表解析声明

例如:

row_data = ['map',[10,20]] 

row_data = tuple(d._get_pk_val() if hasattr(d, '_get_pk_val') else d if type(d) is list else d for d in row_data) 
print row_data 

结果 ROW_DATA ==( '映射',[10,20])

Expected result 

row_data == ('map', (10, 20)) 

需要添加多个如果在列表理解范围内并且每个都有自己的输出。

+0

有一个点,在该列表内涵变得过于漫长而复杂,真正做到可读性。也许这是其中的一个场合? –

回答

0

这应该工作 -

row_data = ['map',[10,20]] 

row_data = tuple(d._get_pk_val() if hasattr(d, '_get_pk_val') else tuple(d) if type(d) is list else d for d in row_data) 
print(row_data) 

Output: ('map', (10, 20)) 
+0

它工作..jus想知道如何返回元组(d),首先它检查hasattr,然后检查第二个如果stmt? – user1050619

+0

明白了..它执行多少如果..谢谢 – user1050619