解包错误

时间:2014-05-05 21:32:34

标签: python python-3.x

    lstOfitems= list(leterCount.values())
    HstNumber = max(lstOfitems)
    ListOfkeys= list(leterCount.keys())
    NumberofChar = len(ListOfkeys)
    tess = turtle.Turtle()
    tess.color("white")
    tess.fillcolor("white")
    tess.pensize(3)
    wn = turtle.Screen()             
    wn.bgcolor("black")
    wn.setworldcoordinates(0-BORDER,0-BORDER,FORWARD*NumberofChar+BORDER,HstNumber+BORDER)
    for a,b in(lstOfitems,ListOfkeys):
        drawBar(tess, a, b)

上面的代码接受一个字符串并计算有多少章程,然后存储在字典中。我之后试图制作一个条形图,但我遇到了一个问题,我得到一个错误,说要解开包装的vaules。我该如何解决 ?

回溯是这样的:

Traceback (most recent call last):

文件" C:\ Users \ Steven \ Desktop \ lab8excirse2.py",第76行,在     主要()   文件" C:\ Users \ Steven \ Desktop \ lab8excirse2.py",第74行,主要     loopSTr()   文件" C:\ Users \ Steven \ Desktop \ lab8excirse2.py",第47行,在loopSTr中     for a,b in(lstOfitems,ListOfkeys): ValueError:解包的值太多(预期2)

2 个答案:

答案 0 :(得分:1)

我想,你想要这样的东西:

 for b,a in leterCount.items():
    drawBar(tess, a, b)

答案 1 :(得分:1)

尝试将(lstOfitems,ListOfkeys)更改为zip(lstOfitems,ListOfkeys)(lstOfitems,ListOfkeys)只是一个由tuple组成的list,您无法解压缩它。但是,Python的内置zip函数将返回元组的迭代器,其中第i个元组包含来自每个参数序列或迭代的第i个元素;这就是你想要的。

但更好的方法是使用字典的'item method:来获取字典键/值对,b,a leterCount.items():`

话虽如此,您是否知道Python collections有一个名为Counterdict子类,它可以完成您想要的任务?您可以像这样使用它:

from collections import Counter

c = Counter('gallahad') # a new counter from an iterable
# c will then be: Counter({'a': 3, 'l': 2, 'h': 1, 'g': 1, 'd': 1})