![](/img/trans.png)
[英]Python-redis keys() returns list of bytes objects instead of strings
[英]How to access elements of a dictionary in python where the keys are bytes instead of strings
對不起,如果這是一個太多的菜鳥問題。
我有一本字典,其中的鍵是字節(如b'access_token'
)而不是字符串。
{
b'access_token': [b'b64ssscba8c5359bac7e88cf5894bc7922xxx'],
b'token_type': [b'bearer']
}
通常我通過data_dict.get('key')
訪問字典的元素,但在這種情況下,我得到的是NoneType
而不是實際值。
我如何訪問它們,或者有沒有辦法將此字節鍵控字典轉換為字符串鍵控字典?
編輯:我實際上是通過urllib.parse.parse_qs(string)
解析像access_token=absdhasd&scope=abc
這樣的查詢字符串得到這個字典
您可以使用str.encode()
和bytes.decode()
在兩者之間進行交換(可選地,提供一個指定編碼的參數。 'UTF-8'
是默認值)。 因此,您可以使用您的 dict:
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']
# }
同樣,您可以在訪問 dict 時使用.encode()
以從字符串中獲取字節 object :
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'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.