循环提取xarray信息时遇TypeError:列表索引不能为字符串
问题分析
你遇到的错误是:类型错误:列表的索引必须是整数或切片,不能是字符串,原因是你把dta初始化为了列表(dta = []),但在循环中尝试用字符串(如'first'、'second')作为索引给它赋值——列表只支持整数/切片类型的索引,自然会报错。
修复代码
将dta初始化为字典(dta = {}),字典支持用字符串作为键来存储键值对,修改后的完整代码如下:
import numpy as np import pandas as pd import xarray as xr samples = {} samples['first'] = [1,2] samples['second'] = [3,4] categories = list(samples.keys()) # 改为字典初始化 dta = {} for i in range(len(categories)): dta[categories[i]] = samples[categories[i]] print(dta) # 输出: {'first': [1, 2], 'second': [3, 4]}
更简洁的实现方式
如果只是复制samples的键值对,完全不需要循环,直接用字典的copy()方法即可:
dta = samples.copy()
如果需要对每个值做额外处理,也可以用字典推导式:
dta = {key: samples[key] for key in categories}
内容的提问来源于stack exchange,提问作者Stata_user
相关产品推荐
相关产品推荐

