簡體   English   中英

解包錯誤

[英]Unpacking error

    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行,在main()文件“C:\\ Users \\ Steven \\ Desktop \\ lab8excirse2.py”,第74行,在main loopSTr()文件“C中:\\ Users \\ Steven \\ Desktop \\ lab8excirse2.py“,第47行,在loopSTr中為a,b in(lstOfitems,ListOfkeys):ValueError:要解壓的值太多(預期2)

我想,你想要這樣的東西:

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

嘗試將(lstOfitems,ListOfkeys)更改為zip(lstOfitems,ListOfkeys) (lstOfitems,ListOfkeys)只是一個由兩個list組成的tuple ,你無法解壓縮它。 但是,Python的內置zip函數將返回元組的迭代器,其中第i個元組包含來自每個參數序列或迭代的第i個元素; 這就是你想要的。

但更好的方法是使用字典的'items method:訪問字典鍵/值對method:對於b,在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})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM