Python 我有一个dict,其中所有元素都是字节。我怎样才能拿回一张字串的唱片?
例如,我有一个这样的口述:Python 我有一个dict,其中所有元素都是字节。我怎样才能拿回一张字串的唱片?,python,dictionary,Python,Dictionary,例如,我有一个这样的口述: for k, v in list(d.items()): d[k.decode('utf8')] = d.pop(k).decode('utf8') {b'mykey':{b'inner_-key':b'inner_-value'} 如何将其转换为字符串和值都是字符串的dict?使用解码: b'somestring'.decode('utf-8') 如果编码不是UTF-8,则需要在调用中使用第二个参数 使用像{b'inner\u key':b'inner
for k, v in list(d.items()):
d[k.decode('utf8')] = d.pop(k).decode('utf8')
{b'mykey':{b'inner_-key':b'inner_-value'}
如何将其转换为字符串和值都是字符串的dict?使用解码:
b'somestring'.decode('utf-8')
如果编码不是UTF-8,则需要在调用中使用第二个参数 使用像
{b'inner\u key':b'inner\u value}
这样的简单字典,您可以执行以下操作:
for k, v in list(d.items()):
d[k.decode('utf8')] = d.pop(k).decode('utf8')
这需要扩展到可能存在嵌套字典的更一般的情况。但是,它会修改现有的词典,如果您不想创建另一个词典,这可能会很有用。我最终还是这样做了
def _convert_bytes_dict(data):
out = {}
for key, val in data.items():
if isinstance(val, list):
decoded_val = [_convert_bytes_dict(i) for i in val]
elif not hasattr(val, "items") and not hasattr(val, "decode"):
decoded_val = val
elif not hasattr(val, "items"):
decoded_val = val.decode("utf-8")
else:
decoded_val = _convert_bytes_dict(val)
out[key.decode("utf-8")] = decoded_val
return out
要为您的dict执行此操作,您可以使用类似的内容,其中
d
是您发布的字典decoded={key.decode(“utf-8”):{k.decode(“utf-8”):v.decode(“utf-8”)for(k,v)in value.items()}for(key,value)in d.items()
有关更多信息: