Python REST API报错TypeError: unhashable type: 'list'的修复咨询
修复Python REST API中TypeError: unhashable type: 'list'错误
问题原因
你写的payload直接把列表放在字典{}里了,Python字典的键必须是可哈希类型(比如字符串、数字、元组),而列表是不可哈希的,所以触发了这个错误。
修复方案
根据REST API的常见要求,有两种可行的修改方式,具体选哪种要看API的文档规范:
方案1:给列表添加合法的字典键(推荐,符合多数API格式)
如果API要求请求体是一个包含列表的字典,给列表指定一个字符串类型的键(键名要和API文档要求的字段一致):
def test_configure_destination_port(omx_ip, verb, path, header): uri = "https://" + omx_ip + '/api' + path # 修复后的payload:给列表添加合法字符串键 payload = { "config_items": [ # 键名可根据API文档调整,比如"ports"或其他指定字段 {"IsPresent": True, "Input": {...}, ...}, # 更多配置项 ] } response = requests.request(verb, uri, verify=False, headers=header, json=payload)
方案2:直接用列表作为请求体
如果API接受直接传入列表作为JSON请求体,去掉外层的字典:
def test_configure_destination_port(omx_ip, verb, path, header): uri = "https://" + omx_ip + '/api' + path # 直接用列表作为payload payload = [ {"IsPresent": True, "Input": {...}, ...}, # 更多配置项 ] response = requests.request(verb, uri, verify=False, headers=header, json=payload)
关键注意点
- 务必对照目标API的文档确认请求体格式,避免格式不匹配导致新的错误。
- 记住Python字典的核心规则:键只能是可哈希对象,列表、字典这类可变类型不能作为键。
内容的提问来源于stack exchange,提问作者joe john
相关产品推荐
相关产品推荐

