"太多字段要解压"错误,即使我在左侧和右侧有相同数量的字段

Nie*_*ein 1 python for-loop tuples

非常简单的代码,我有一个带有两个值的字符extraAccessions,一个字符串和一个列表.我想循环遍历extraAccessions(在这个例子中只有一个)并使用元组中的第一个和第二个值.

extraAccessions=('MS:1000505',['value','unitName'])
for accession, fieldIdentifiers in extraAccessions:
    [do something]
Run Code Online (Sandbox Code Playgroud)

但是,这给了

ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)

当我做

print (extraAccessions)
Run Code Online (Sandbox Code Playgroud)

我明白了

('MS:1000505', ['value', 'unitName'])
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎有两个价值,正是所要求的

for accession, fieldIdentifiers in extraAccessions:
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么我会收到这个错误.


编辑:

而当我这样做

for accession in extraAccessions:
     print accession
Run Code Online (Sandbox Code Playgroud)

我得到第一个元素MS:1000505

NPE*_*NPE 7

我们来检查你的代码:

extraAccessions=('MS:1000505',['value','unitName'])
for accession, fieldIdentifiers in extraAccessions:
    ...
Run Code Online (Sandbox Code Playgroud)

在这里,您将迭代extraAccessions具有两个条目的元组():

  1. 'MS:1000505'
  2. ['value','unitName']

然后,您尝试将每个条目依次解压缩为两个变量.这不适用于第一个条目,因为它不是长度为2.

如果您要将两个条目解压缩到两个变量中,只需使用:

accession, fieldIdentifiers = extraAccessions
Run Code Online (Sandbox Code Playgroud)

这将设定

  1. accession'MS:1000505'
  2. fieldIdentifiers['value','unitName']