我正在尝试创建一个包含多个字典的列表,如:
[ { token_id: 7183938r8393}, { token_id: 82838rhf88381}, ... ]
我的代码是:
import pyodbc
from sqlalchemy import create_engine
import pandas as pd
import json
def all_token(x):
con = pyodbc.connect(Trusted_connection='yes', driver= '{SQL Server}',server = 'DESKTOP-
9S6405ASQLEXPRESS' ,database ='Q42')
cursor = con.cursor()
list = []
my_dict = {}
cursor.execute("SELECT [tokens ].token_id FROM [tokens ]")
for row in cursor.fetchall():
list.append(row)
print(list)
def listToDict(list):
convert = { f"Token ID {str(i)}" : list[i][0] for i in range(0, len(list))}
return convert
all_token(list)
print(list)
dict = listToDict(list)
print(dict)
和我收到以下错误消息:
TypeError: object of type 'type' has no len()
list = []
在这一行中,您定义了一个变量list
。这会把一切都搞砸,因为list
是一个类。
不要使用关键字作为变量名
相反,将变量重命名为my_list
TypeError: object of type 'type' has no len()
这里的错误是list
是一个保留字,不应该用作变量。更改变量名,就可以开始了!
你的缩进好像坏了。此外,你不应该用关键字命名列表。所以我用list1
。您将list1
发送给all_token()
这没有任何意义,因为您将在all_token
函数中创建list1
。也许你应该输入:
return list1
代替:
print(list1)
…而不是
all_token(list1)
写……
list1 = all_token()
另外,您需要在all_token()的参数中删除x
。现在你有了list1
,可以将其转换为字典或任何你想要的。