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

时间:2015-09-23 13:26:50

标签: python python-2.7 dictionary list-comprehension

考虑一下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

为什么以及如何解决它?

1 个答案:

答案 0 :(得分:3)

message: 8 = = 9A52D5D6C6E999AD �R���陭 test = 16 = EFBFBD52EFBFBDEFBFBDEFBFBDE999AD 是一个词典列表。您需要另一层嵌套才能使代码正常工作,并且由于您正在寻找一个键,因此您需要在此处生成一个列表(键必须在字典中唯一):

dict['valueB']

如果您尝试制作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']是嵌套字典中的键,我们将其解压缩。