Python 如何使用列表理解和生成器创建列表
我正在使用pyad库从active directory检索一些数据。执行查询后,我希望使用检索到的数据创建一个数据帧:Python 如何使用列表理解和生成器创建列表,python,list-comprehension,Python,List Comprehension,我正在使用pyad库从active directory检索一些数据。执行查询后,我希望使用检索到的数据创建一个数据帧: import pyad import pyad.adquery as query pyad.set_defaults(ldap_server=xxxxxx) q = query.ADQuery() q.execute( attributes=[attribute1,attribute2,attribute3] where_clause=xxx base
import pyad
import pyad.adquery as query
pyad.set_defaults(ldap_server=xxxxxx)
q = query.ADQuery()
q.execute(
attributes=[attribute1,attribute2,attribute3]
where_clause=xxx
base_dn=xxxxx
)
运行查询后,我将以以下方式创建数据帧:
parameter1 = []
parameter2 = []
parameter3 = []
for x in q.get_results(): #IT'S A GENERATOR
parameter1.append(x['attribute1'])
parameter2.append(x['attribute2'])
parameter3.append(x['attribute3'])
df = pd.Dataframe({'P1':parameter1, 'P2':parameter2, 'P3':parameter3})
我创建数据帧的方式并不干净优雅,有没有办法改进这段代码?如果只是一个参数,我会:
df = pd.Dataframe({'P1': [x['parameter1'] for x in q.get_results()]})
但是q是一个生成器,因此如果不再次运行方法q.execute(…)将生成器移开,我就无法运行三个列表理解
results = list(q.get_results())
那么你应该能够:
df = pd.Dataframe({'P1': [x['parameter1'] for x in results], 'P2': [x['parameter2'] for x in results], ...})
把发电机弄到一边去
results = list(q.get_results())
那么你应该能够:
df = pd.Dataframe({'P1': [x['parameter1'] for x in results], 'P2': [x['parameter2'] for x in results], ...})