繁体   English   中英

python json不可哈希类型'列表'

[英]python json unhashable type 'list'

我有这段代码将JSON数据提交到服务器,但是它给出了错误“无法散列的类型列表”

hcatalog_nodes =["idh30-1.srv.acent.net.uk","idh30-2.srv.acent.net.uk","idh30-3.srv.acent.net.uk"]
for node in hcatalog_nodes:
    data = json.dumps({[
                            {
                                "rolename": "HCatalog",
                                "hostname": node
                            }

                        ]})
    request = urllib2.Request("https://192.168.0.76:9443/restapi/acent/api/v2/cluster/"+cluster_name+"/services/hbase/roles")
    base64string = base64.encodestring('%s:%s' % ("admin", "admin")).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)
    print "setting up HBase roles on node %s " % (node)
    result = urllib2.urlopen(request,data)
    print result.read()

错误:

Traceback (most recent call last):
  File "/home/kshk/PycharmProjects/intelIDH/autoIDH.py", line 287, in <module>
    main()
  File "/home/kshk/PycharmProjects/intelIDH/autoIDH.py", line 278, in main
    add_hcatalogRoles()
  File "/home/kshk/PycharmProjects/intelIDH/autoIDH.py", line 147, in add_hcatalogRoles
    "hostname": node
TypeError: unhashable type: 'list'

Process finished with exit code 1

任何想法我如何可以设置json请求中的“节点”的值?

问题在json.dumps()行上:

data = json.dumps({[{"rolename": "HCatalog", "hostname": node}]})

这基本上是尝试创建仅包含一个列表元素的集合。 Python列表不能是集合的元素。


您可能想创建一个字典,然后将其传递给json.dumps()

data = json.dumps({"rolename": "HCatalog", "hostname": node})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM