对不起,如果这是一个太多的菜鸟问题。
我有一个字典,其中键是字节(如b'access_token'
(而不是字符串。
{
b'access_token': [b'b64ssscba8c5359bac7e88cf5894bc7922xxx'],
b'token_type': [b'bearer']
}
通常我通过data_dict.get('key')
访问字典的元素,但在这种情况下,我得到的是NoneType
而不是实际值。
如何访问它们,或者有没有办法将此字节键控字典转换为字符串键控字典?
编辑:我实际上是通过解析像这样的查询字符串来获得这个字典access_token=absdhasd&scope=abc
byurllib.parse.parse_qs(string)
您可以使用str.encode()
和bytes.decode()
在两者之间交换(可选,提供指定编码的参数。'UTF-8'
是默认值(。作为一个 结果,你可以接受你的字典:
my_dict = {
b'access_token': [b'b64ssscba8c5359bac7e88cf5894bc7922xxx'],
b'token_type': [b'bearer']
}
只需理解一下即可交换所有键:
new_dict = {k.decode(): v for k,v in my_dict.items()}
# {
# 'access_token': [b'b64ssscba8c5359bac7e88cf5894bc7922xxx'],
# 'token_type': [b'bearer']
# }
同样,您可以在访问字典时使用.encode()
,以便从字符串中获取字节对象:
my_key = 'access_token'
my_value = my_dict[my_key.encode()]
# [b'b64ssscba8c5359bac7e88cf5894bc7922xxx']
最有可能的是,你犯了一些愚蠢的错误。 它在我的测试中工作正常。
也许您在尝试索引字典时忘记添加前缀b
d={
b'key1': [b'val1'],
b'key2': [b'val2']
}
d[b'key1'] # --> returns [b'val1']
d.get(b'key2') # --> returns [b'val2']
也许这可能是您正在寻找的东西?
dict = {
b'access_token': [b'b64ssscba8c5359bac7e88cf5894bc7922xxx'],
b'token_type': [b'bearer']
}
print(dict.get( b'access_token'))