You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用next()和iter()提取键:Python3.6 JSON对象键值分离报错问题

解决从字典列表提取键值时的ValueError问题

嘿,我来帮你搞定这个报错!你遇到的ValueError: not enough values to unpack (expected 2, got 1),大概率是因为你直接遍历了整个字典列表,而没深入到每个字典内部去提取键值对。先看看你的数据结构:my_dictionary是一个字典的列表,每个元素都是独立的字典,比如第一个元素是{ "position": 0, "A": "Age" },第二个是{ "B": "Class", "position": 1 },以此类推。

错误原因分析

如果你的代码是类似这样的:

for k, v in my_dictionary:
    print(k, v)

那肯定会报错——因为my_dictionary里的每个元素是一个完整的字典(是1个值),而你试图把它拆成k和v两个值,自然会提示“不够拆的”。

正确的解决方案

根据你的需求,我整理了几种常用的处理方式:

1. 逐个提取每个字典的所有键值对

如果你想遍历列表里的每个字典,然后取出每个字典的键和值,可以用嵌套循环:

# 补全你未写完的字典数据
my_dictionary = [
    { "position": 0, "A": "Age" },
    { "B": "Class", "position": 1 },
    { "C": "ID", "position": 2 },
    { "D": "Section", "position": 3 },
    { "E": "Height", "position": 4 }
]

# 先遍历列表中的每个字典
for dict_item in my_dictionary:
    # 再遍历当前字典的键值对
    for key, value in dict_item.items():
        print(f"键: {key}, 值: {value}")

运行后会逐个输出每个字典里的键值对,完全不会报错。

2. 提取特定键的对应值(比如区分position和字母键)

如果你的目标是把每个字典里的字母键(A、B、C等)和对应的position值分开提取,可以这样处理:

letter_keys = []
letter_values = []
positions = []

for dict_item in my_dictionary:
    for key, value in dict_item.items():
        if key != "position":
            letter_keys.append(key)
            letter_values.append(value)
        else:
            positions.append(value)

print("字母键列表:", letter_keys)
print("字母对应的值列表:", letter_values)
print("position列表:", positions)

运行结果会是:

字母键列表: ['A', 'B', 'C', 'D', 'E']
字母对应的值列表: ['Age', 'Class', 'ID', 'Section', 'Height']
position列表: [0, 1, 2, 3, 4]

3. 扁平化提取所有键和值到列表

如果你想要把所有字典的键和值分别放到两个大列表里,用列表推导式会更简洁:

all_keys = [key for item in my_dictionary for key in item.keys()]
all_values = [value for item in my_dictionary for value in item.values()]

print("所有键:", all_keys)
print("所有值:", all_values)

输出结果:

所有键: ['position', 'A', 'B', 'position', 'C', 'position', 'D', 'position', 'E', 'position']
所有值: [0, 'Age', 'Class', 1, 'ID', 2, 'Section', 3, 'Height', 4]

另外提一句,Python3.6的CPython实现里字典已经是有序的(3.7开始成为官方标准),所以遍历的顺序会和你定义字典时的顺序一致,这点不用担心~

内容的提问来源于stack exchange,提问作者LITDataScience

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:39