*** ValueError: not enough values to unpack (expected 2, got 1)

*** ValueError: not enough values to unpack (expected 2, got 1)

我正在尝试比较两个听写:

> x_state
[{'ID': 1, 'Wert': '6,6743', 'Name': 'Δ'}, {'Wert': 'Δ', 'ID': 3, 'Name': 'Δ'}, {'ID': 4, 'Name': 'D'}, {'ID': 5, 'Name': 'X'}]
> objects
[{'ID': 4, 'Name': 'D'}, {'ID': 5, 'Name': 'X'}, {'ID': 1, 'Wert': '6,6743', 'Name': 'Δ'}, {'Wert': 'Δ', 'ID': 3, 'Name': 'Δ'}]

为了更容易找到差异,我先对它们进行排序,然后 运行 对其进行一些比较方法。由于 SO 上的大多数类似问题导致长度不同或读取文件时出现问题(x_state 是文件中的 JSON)我决定计算它们:

unos=[sorted(l, key=itemgetter("ID"))for l in (x_state,objects)]
> unos
[[{'ID': 1, 'Wert': '6,6743', 'Name': 'Δ'}, {'Wert': 'Δ', 'ID': 3, 'Name': 'Δ'}, {'ID': 4, 'Name': 'D'}, {'ID': 5, 'Name': 'X'}], 
 [{'ID': 1, 'Wert': '6,6743', 'Name': 'Δ'}, {'Wert': 'Δ', 'ID': 3, 'Name': 'Δ'}, {'ID': 4, 'Name': 'D'}, {'ID': 5, 'Name': 'X'}]]
#Looks like nothing weird happened

> len(unos)
2
> len(unos[0])
4
> len(unos[1])
4

看起来不错,但从那时起一切都失败了:

> for i,j in unos: print(f"{i}------{j}")
*** ValueError: too many values to unpack (expected 2)
> for i,j in zip(unos): print(f"{i}------{j}")
*** ValueError: not enough values to unpack (expected 2, got 1)

正在尝试其他方法以查看两者是否包含相同的数据:

> any(x != y for x, y in unos)
*** ValueError: too many values to unpack (expected 2)

这是怎么回事?我该如何正确调试这个问题?

排序命令执行错误。正确:

ipdb> !for x,y in zip(sorted(x_state, key=itemgetter("ID")),sorted(objects, key=itemgetter("ID"))): print(x,y)
{'ID': 1, 'Wert': '6,6743', 'Name': 'Δ'} {'ID': 1, 'Wert': '6,6743', 'Name': 'Δ'}
{'Wert': 'Δ', 'ID': 3, 'Name': 'Δ'} {'Wert': 'Δ', 'ID': 3, 'Name': 'Δ'}
{'ID': 4, 'Name': 'D'} {'ID': 4, 'Name': 'D'}
{'ID': 5, 'Name': 'X'} {'ID': 5, 'Name': 'X'}