为了账号安全,请及时绑定邮箱和手机立即绑定

gspread:有没有办法将字典加载到sheet.update_cells()中?

gspread:有没有办法将字典加载到sheet.update_cells()中?

SMILET 2023-06-27 18:23:25
我认为这里的代码非常草率: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() ?
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

如果您的目标是拥有一个update_cells(),那么您应该能够使用:


cvs.update_cells(industry + headquarters + specialties + ...)

您的 Cell 对象看起来都具有行和列数据,因此它们不需要位于单独的列表中。


我认为我没有看到任何从字典到谷歌表格的内容,但另一种方法(其中键是行业、总部等,而值是单元格列表)是:


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']))


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信