Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我有一个dict,其中所有元素都是字节。我怎样才能拿回一张字串的唱片?_Python_Dictionary - Fatal编程技术网

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()
有关更多信息: