我试图将传递给函数的变量添加到json但我一直收到错误,我使用了这个问题here,这是我的代码:
#!/usr/bin/env python
import requests
def interact(token):
token_string = str(token)
print token_string
headers = {{'X-Username':'user','X-Token':'{0}'}}.format(token_string)
print "token:"
print headers
# main
login()
get_token = login()
interact(get_token)
这是错误:
TypeError: unhashable type: 'dict'
答案 0 :(得分:1)
您必须将format
应用于字符串,而不是包含字符串的字典:
headers = {
{'X-Username':'user',
'X-Token':'{0}'.format(token_string)
}
}
而且,您无法将dict
放入set
;您必须使用list
。
headers = [
{'X-Username':'user',
'X-Token':'{0}'.format(token_string)
}
]
答案 1 :(得分:1)
您收到该错误是因为您正试图将dict放入Set中。
考虑:
foo = {"a"} # type(foo) <class 'set'>
foo.add({"b": 1}) # throws unhashable error
{"a", {"b": 1}} # equivalent to the above 2 lines
这是一个相当常见的错误,因为set literals和dict literals都使用花括号:
bar = {"a", 1, "b", 2} # oops! 4 element set instead of dict with 2 k/v pairs