考虑一下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
为什么以及如何解决它?
答案 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']
是嵌套字典中的键,我们将其解压缩。