You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google Sheets列转为Python键值字典并解决求和异常

问题:从Google Sheets读取字典后求和结果异常

原正常运行代码

原本的代码可正确计算出结果8:

dictionariob = {"paz": 5, "felicidad": 2, "mejor": 3, "alivio": 4, "-": -3}
lista = ["felicidad", "paz", "día", "estoy", "isla", "alivio", "-"]

sum([dictionariob[i] for i in lista if i in dictionariob])

迁移到Google Sheets后的操作

将键值对存储到Google Sheets后,使用以下代码读取并转换为字典:

sheet_id = "1-odw996EIUB9mo2Ad1fNh0y9QiXv7GU81COMj6g1Z-A"
sheet_name = "a"
dicc = f"https://docs.google.com/spreadsheets/d/1-odw996EIUB9mo2Ad1fNh0y9QiXv7GU81COMj6g1Z-A/gviz/tq?tqx=out:csv&sheet=a"

import pandas as pd

diccionarioa = pd.read_csv(dicc, error_bad_lines=False, header=0)
diction = diccionarioa.to_dict()

替换原求和代码后结果为0:

lista = ["felicidad", "paz", "día", "estoy", "isla", "alivio", "-"]
sum([diction[i] for i in lista if i in diction])

问题根源

pd.DataFrame.to_dict()默认返回结构是以列名为顶层键,对应值是该列所有行的索引-值字典。假设你的表格有两列palabra(单词)和valor(数值),转换后的diction结构如下:

{
  "palabra": {0: "paz", 1: "felicidad", 2: "mejor", ...},
  "valor": {0: 5, 1: 2, 2: 3, ...}
}

此时lista中的元素(如"felicidad")并不是diction的顶层键,列表推导式会生成空列表,sum结果自然为0。

正确的转换方式

需要将表格转换为单词作为键、数值作为值的字典,有两种常用方法:

方法1:使用set_index+to_dict

# 假设表格的单词列名为"palabra",数值列名为"valor"
diction = diccionarioa.set_index('palabra')['valor'].to_dict()

方法2:使用zip

diction = dict(zip(diccionarioa['palabra'], diccionarioa['valor']))

转换后再运行求和代码,即可得到预期结果8。

内容的提问来源于stack exchange,提问作者Saríah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:10:34