使用字典理解,需要多于 1 个值才能解包

Using dictionary comprehenion, need more than 1 value to unpack

考虑一下您的 JSON 结构如下:

{
    "valueA": "2",
    "valueB": [
        {
            "key1": "value1"
        },
        {
            "key2": "value2"
        },
        {
            "key3": "value3"
        }
    ]
}

当做类似的事情时:

dict_new = {key:value for (key,value) in dict['valueB'] if key == 'key2'}  

我得到:

 ValueError: need more than 1 value to unpack

为什么以及如何解决?

dict['valueB'] 是一个 词典列表 。您需要另一层嵌套才能使您的代码正常工作,并且由于您正在寻找 one 键,因此您需要在此处生成一个列表(键在字典中必须是唯一的):

values = [value for d in dict['valueB'] for key, value in d.items() if key == 'key2'] 

如果您试图制作一个包含 key2: value 对的字典,您将只剩下最后一对,因为之前的 value 已被替换为与相同的关联关键。

更好的是,只需抓住那个钥匙,如果您只想要那个钥匙,则无需遍历 所有 个项目:

values = [d['key2'] for d in dict['valueB'] if 'key2' in d]

这会过滤 dict['valueB'] 列表中的词典列表;如果 'key2' 是该嵌套字典中的键,我们将其提取。