Python迭代3个列表并合并为1个

时间:2017-02-23 00:48:25

标签: python list merge

我有3个名为

的列表
schema_list, table_list, column_list

架构,表格和列具有1:1匹配,意味着schema_list[0][0]对应table_list[0][0]对应column_list[0][0]。例如,它可能看起来像:

x = schema_list[0][0]+'.'+table_list[0][0]+'.'+column_list[0][0]
print x

输出:

'account_schema.account_table.account_column'

如何遍历所有列表,以便我可以生成类似上面的输出但是整个列表。

我试过这样的事情:

for schemas in schema_list:
    for tables in table_list:
        for columns in column_list:
            x = """
                SELECT
                    count({2})
                FROM {0}.{1}
                """.format(schemas,tables,columns)
        print x

输出贯穿整个列表,但我有几个重复,所以我必须遗漏一些东西。

  1. 我也尝试过:

    表示zip中的a,b,c(schema_list,table_list,column_list):      y =“”“             选择                 计数({2})             从{0}。{1}             “”” .format(A,B,C)      打印

  2. 得到一个输出:

    SELECT
                    count(0              account_id
             employer_id
             search_date
    
                FROM 0    schema1
             schema1
             schema1
    
             table1
             table1
             table
    

    看起来for循环会将整个列表转储到第一次迭代中吗?

    2.如果我这样做:

    for a,b,c in zip(schema_list[0], table_list[0], column_list[0]):
        y = """
                 SELECT
                    count({2})
                FROM {0}.{1}
                """.format(a,b,c)
        print y
    

    输出打印单个元素,但不会遍历table_list中的所有表。它会迭代遍历column_list中的所有列。

    这不是重复的帖子,因为这是一个二维数组。这是解决方案:

    sql_queries=[]
        for x in xrange(len(schema_list)):
            for a,b,c in zip(schema_list[x], table_list[x], column_list[x]):
                 y = """
                    SELECT
                        count({2})
                    FROM {0}.{1}
                    """.format(a,b,c)
                 sql_queries.append(y)
    

0 个答案:

没有答案