Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态迭代循环_Python_Python 3.x - Fatal编程技术网

Python 动态迭代循环

Python 动态迭代循环,python,python-3.x,Python,Python 3.x,我正在寻找一种更具活力的方式来写下面的语句 data = [r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], r[12], r[13]] r表示传入的响应数据,我将其作为响应数据,并将项目枚举到字典中。这是可行的,但太静态了。如果添加或删除了数据,则需要对API代码进行调整,以对其进行说明 什么是处理这个问题的直观方法?下面是一个完整类的示例,以供参考 class Pots(Resource):

我正在寻找一种更具活力的方式来写下面的语句

data = [r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], r[12], r[13]] 
r
表示传入的响应数据,我将其作为响应数据,并将项目枚举到字典中。这是可行的,但太静态了。如果添加或删除了数据,则需要对API代码进行调整,以对其进行说明

什么是处理这个问题的直观方法?下面是一个完整类的示例,以供参考

class Pots(Resource):
    def get(self, store):
        print('USAGE: Received a request at POTS for Store ' + store )
        conn = sqlite3.connect('store-db.db')
        cur = conn.cursor()
        cur.execute('SELECT * FROM Pots WHERE StoreNumber like ' + store) 
        res = cur.fetchall()
        if not res:
            print("RESPONSE: No data was found for this request.")
            return('No data was found', 404)
        else:
            for r in res:
                column_names = ["StoreNumber", "ForwardOnFail", "HuntLine","FirePrimary","FireSecondary", "BurglarPrimary", "BurglarSecondary","BurglarTertiary", "DNR", "PassengerElevator", "FreightElevator", "Escalator1", "Escalator2","ShopperTrak"]
                data = [r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], r[12], r[13]]         
                datadict = {column_names[itemindex]:item for itemindex, item in enumerate(data)}
                return(datadict, 200)

编辑:请忽略任何SQL效率低下的问题。虽然我很感谢您的建议,但我知道并且不打算在生产中使用此功能。仅用于测试。:)

为此使用切片
r[:14]

print(r[:14])

为此使用切片
r[:14]

print(r[:14])

通常的列表理解:

 r = [1, 2, 3] 
 data = [r[0], r[1], r[2]]
 data
 [1, 2, 3]
 data = [r[i] for i in range(len(r)-1)]
 data
 [1, 2, 3]

通常的列表理解:

 r = [1, 2, 3] 
 data = [r[0], r[1], r[2]]
 data
 [1, 2, 3]
 data = [r[i] for i in range(len(r)-1)]
 data
 [1, 2, 3]

你可能在找这样的东西

请注意,我们使用的是行工厂,因此我们得到
row.keys()

我还冒昧地

  • 修复了SQL注入漏洞
  • 添加limit子句(因为始终只返回一行)
  • 由于上述原因,使用
    fetchone()
    代替
    fetchall()


你可能在找这样的东西

请注意,我们使用的是行工厂,因此我们得到
row.keys()

我还冒昧地

  • 修复了SQL注入漏洞
  • 添加limit子句(因为始终只返回一行)
  • 由于上述原因,使用
    fetchone()
    代替
    fetchall()


假设您有这样的东西(使用pythonshell):


假设您有这样的东西(使用pythonshell):


data=r[:14]
?或者使用
zip
组合
r
列名
,这将在短列表完成后丢弃任何不匹配项。您可能应该查看ORM系统,如
sqlalchemy
请修复代码中的SQL注入:
cur.execute('SELECT*FROM Pots WHERE StoreNumber like'+sto
应该是
cur.execute('SELECT*FROM Pots WHERE StoreNumber like?)('sto,)
我同意切片,但请注意,根据
r
的类型(例如numy数组)该切片实际上可能是
r
上的一个视图,而不是一个新列表,即修改
data
可能会修改
r
@codepowned,因此这确实是一个X/Y问题……您确实希望将行作为列名返回给value dict,对吗?
data=r[:14]
?或使用
zip
组合
r
列名
,这将在短列表完成后丢弃任何不匹配项。您可能应该查看ORM系统,如
sqlalchemy
请修复代码中的SQL注入:
cur.execute('SELECT*FROM Pots WHERE StoreNumber like'+sto
应该是
cur.execute('SELECT*FROM Pots WHERE StoreNumber like?)('sto,)
我同意切片,但请注意,根据
r
的类型(例如numy数组)该切片实际上可能是
r
上的一个视图,而不是一个新列表,即修改
data
可能会修改
r
@codepowned,因此这确实是一个X/Y问题……您真的希望将行作为列名返回给value dict,对吗?唯一的问题是它不会保留其“
列名”
关联。on最重要的问题是,它不会保留其“
列名”
关联。这是非常直观的,完全符合我的要求,而我没有完全明确的要求。很棒的工作,我会更新我的帖子,更简洁地解释这是我想要的结果。这是非常直观的,完全符合我的要求没有我完全清楚的要求。很棒的工作,我会更新我的帖子,更简洁地解释这是我想要的结果。将
数据
切片到
列名的长度
是不必要的,因为
zip
使用了最短的可匹配参数的长度。将
数据
切片到
co>的长度列名称
是不必要的,因为
zip
使用了最短的iterable参数的长度。