将拆分后的字符串转换为元组会导致“太多值无法解包”

发布于 2021-01-29 14:59:10

在for循环中使用split会导致上述异常。但是,当从for循环中获取独立元素时,它可以工作:

>>> for k,v in x.split("="):
...   print k,v
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> y =  x.split("=")
>>> y
['abc', 'asflskfjla']
>>> k,v = y
>>> k
'abc'
>>> v
'asflskfjla'

一个解释将不胜感激-并且自然也为for循环版本的正确语法。

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    for环路期望的是,在迭代每个项目可以解压到两个变量。因此,在您的情况下,看起来像其中之一:

    [('a, b'), ('c, d'), ...]
    [['a, b'], ['c, d'], ...]
    ['ab', 'cd', ...]
    ...
    

    这些可迭代项中的每个项都可以分为kv组件。在您的情况下,它们不能,因为的输出x.split('=')是具有两个以上字符的字符串列表:

    ['abc', 'asflskfjla']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看