gspread:有没有办法将字典加载到 sheet.update_cells() 中?
gspread: Is there a way to load a dict into sheet.update_cells()?
我这里有我认为非常草率的代码:
industry = []
headquarters = []
specialties = []
totalEmployeeCount = []
growth6Mth = []
website = []
for i in cvs_data:
j = ci_data[0]
for j in ci_data:
if i['companyName'] == j['name']:
industry.append(Cell(row = cvs_data.index(i)+2, col = 6,
value = j['industry']))
headquarters.append(Cell(row = cvs_data.index(i)+2, col = 8,
value = j['headquarters']))
specialties.append(Cell(row = cvs_data.index(i)+2, col = 9,
value = j['specialties']))
totalEmployeeCount.append(Cell(row = cvs_data.index(i)+2, col = 10,
value = j['totalEmployeeCount']))
growth6Mth.append(Cell(row = cvs_data.index(i)+2, col = 11,
value = j['growth6Mth']))
website.append(Cell(row = cvs_data.index(i)+2, col = 14,
value = j['website']))
cvs.update_cells(industry)
cvs.update_cells(headquarters)
cvs.update_cells(specialties)
cvs.update_cells(totalEmployeeCount)
cvs.update_cells(growth6Mth)
cvs.update_cells(website)
其中 cvs_data 是用于其索引的字典列表。实际的 gspread 工作表 (cvs) 将使用 ci_data 中的值进行更新,这是另一个字典列表。
我想我的搜索也可以更好。
是否可以将所有这些值(即行业、总部等)附加到一个字典而不是单独的列表中,然后在那个字典上调用 update_cells()?
如果您的目标是拥有一个 update_cells()
,那么您应该能够使用:
cvs.update_cells(industry + headquarters + specialties + ...)
您的 Cell 对象看起来都有行和列数据,因此它们不需要在单独的列表中。
我不认为我见过任何从 dict 到 google sheet 的东西,但是另一种方法可以做到这一点(键是行业、总部等。而值是单元格列表)将是:
all_data = {'industry': [], 'headquarters': [], ...}
# add cells to all_data
data = []
for list_of_cells in all_data.values():
data.extend(list_of_cells)
cvs.update_cells(data)
对于您的搜索,将 ci_data
从一个字典列表重组为一个字典可能会有所帮助。您可以将键作为名称,而将值作为字典:
ci_data_dict = dict()
for item in ci_data:
name = item['name']
ci_data_dict[name] = item
那么你的代码中就不会嵌套 for 循环了:
for i in cvs_data:
j = ci_data_dict[i['company_name']]
industry.append(Cell(row = cvs_data.index(i) + 2, col = 6, value = j['industry']))
我这里有我认为非常草率的代码:
industry = []
headquarters = []
specialties = []
totalEmployeeCount = []
growth6Mth = []
website = []
for i in cvs_data:
j = ci_data[0]
for j in ci_data:
if i['companyName'] == j['name']:
industry.append(Cell(row = cvs_data.index(i)+2, col = 6,
value = j['industry']))
headquarters.append(Cell(row = cvs_data.index(i)+2, col = 8,
value = j['headquarters']))
specialties.append(Cell(row = cvs_data.index(i)+2, col = 9,
value = j['specialties']))
totalEmployeeCount.append(Cell(row = cvs_data.index(i)+2, col = 10,
value = j['totalEmployeeCount']))
growth6Mth.append(Cell(row = cvs_data.index(i)+2, col = 11,
value = j['growth6Mth']))
website.append(Cell(row = cvs_data.index(i)+2, col = 14,
value = j['website']))
cvs.update_cells(industry)
cvs.update_cells(headquarters)
cvs.update_cells(specialties)
cvs.update_cells(totalEmployeeCount)
cvs.update_cells(growth6Mth)
cvs.update_cells(website)
其中 cvs_data 是用于其索引的字典列表。实际的 gspread 工作表 (cvs) 将使用 ci_data 中的值进行更新,这是另一个字典列表。
我想我的搜索也可以更好。
是否可以将所有这些值(即行业、总部等)附加到一个字典而不是单独的列表中,然后在那个字典上调用 update_cells()?
如果您的目标是拥有一个 update_cells()
,那么您应该能够使用:
cvs.update_cells(industry + headquarters + specialties + ...)
您的 Cell 对象看起来都有行和列数据,因此它们不需要在单独的列表中。
我不认为我见过任何从 dict 到 google sheet 的东西,但是另一种方法可以做到这一点(键是行业、总部等。而值是单元格列表)将是:
all_data = {'industry': [], 'headquarters': [], ...}
# add cells to all_data
data = []
for list_of_cells in all_data.values():
data.extend(list_of_cells)
cvs.update_cells(data)
对于您的搜索,将 ci_data
从一个字典列表重组为一个字典可能会有所帮助。您可以将键作为名称,而将值作为字典:
ci_data_dict = dict()
for item in ci_data:
name = item['name']
ci_data_dict[name] = item
那么你的代码中就不会嵌套 for 循环了:
for i in cvs_data:
j = ci_data_dict[i['company_name']]
industry.append(Cell(row = cvs_data.index(i) + 2, col = 6, value = j['industry']))