反正我已经写好了,我就把它放在这里。它会根据您的字典在内存中创建一个数据库,然后您可以查询该数据库(您可能会注意到很灵活)以获得您想要的结果。
dict_ = {'Sex': ['Male', 'Male', 'Female', 'Female', 'Male'],
'Height': [100, 200, 150, 80, 90],
'Weight': [20, 60, 40, 30, 30]}
import sqlite3
conn = sqlite3.connect(':memory:')
curs = conn.cursor()
column_headers = [x for x in dict_] # the keys are the headers
column_types = ('' for x in dict_)
header_creation = ', '.join([' '.join(x) for x in zip(column_headers, column_types)])
curs.execute("CREATE TABLE temp ({})".format(header_creation))
bindings = ','.join('?' * (header_creation.count(',') + 1))
result_insertion = "INSERT INTO temp ({}) VALUES ({})".format(', '.join(column_headers), bindings)
for i, item in enumerate(dict_[column_headers[0]]):
values = [item]
for j in column_headers[1:]:
values.append(dict_[j][i])
curs.execute(result_insertion, values)
conn.commit()
condition = 'weight >= 40'
out = curs.execute('SELECT * FROM temp{}'.format(' WHERE {}'.format(condition) if condition else ';')).fetchall()
dict_out = {}
for i, k in enumerate(column_headers):
dict_out[k] = [x[i] for x in out]
print(dict_out) # {'Sex': ['Male', 'Female'], 'Weight': [60, 40], 'Height': [200, 150]}