Python按键列表提取字典值报unhashable type: 'list'错误如何解决
报错原因
region_colsbis为嵌套列表结构,直接遍历外层列表得到的元素是内层完整列表,列表不可哈希,触发unhashable type: 'list'报错- 若从DataFrame提取列时未转换为纯列表,拿到的是Pandas Series对象,Series不可哈希,触发
'Series' objects are mutable, thus they cannot be hashed报错
解决方法
通用快速方案
先提取内层列表、转换为纯字符串列表后再做映射:
# 1. 先取嵌套列表的内层元素,若为Series则先转列表 flat_regions = region_colsbis[0] # 2. 列表推导完成键值映射 region_cols = [region_colors[region] for region in flat_regions]
如果是直接从DataFrame列提取,建议提取时就转成单层列表,避免后续嵌套/Series问题:
# 提取DataFrame列时直接转纯列表,替换为你的实际列名即可 region_colsbis = df['region'].tolist() region_cols = [region_colors[region] for region in region_colsbis]
兼容任意嵌套层数的方案
如果不确定嵌套层级,可以先打平所有元素再做映射:
# 递归打平嵌套列表 def flatten(nested): for item in nested: if isinstance(item, list): yield from flatten(item) else: yield item region_cols = [region_colors[r] for r in flatten(region_colsbis)]
内容的提问来源于stack exchange,提问作者Héctor Ocampo Ruiz
相关产品推荐
相关产品推荐

