gspread:有没有办法将字典加载到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对象看起来都具有行和列数据,因此它们不必位于单独的列表中。

我认为我没有见过从字典到Google工作表的任何内容,但是另一种方法(键是行业,总部等,而值是单元格列表)会是:

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...