2014-05-05 38 views
0
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) 

上面的代碼需要一個字符串並計算出有多少個章程,然後存儲在字典中。之後我試圖做一個條形圖,但是我遇到了一個問題,我得到一個錯誤,說有些值得解開。我該如何解決 ?開箱錯誤

的追溯是這樣的:

Traceback (most recent call last): 

文件 「C:\用戶\史蒂芬\桌面\ lab8excirse2.py」,線76,在主 () 文件「C:\用戶\史蒂芬\ Desktop \ lab8excirse2.py「,第74行,主要爲 loopSTr() 文件」C:\ Users \ Steven \ Desktop \ lab8excirse2.py「,第47行,在循環STr for a,b in(lstOfitems,ListOfkeys) : ValueError:太多值解包(預計2)

+0

我想你只需要'zip(lstOfitems,ListOfkeys)'。 –

+0

請提供完整的錯誤追溯。 – jonrsharpe

回答

1

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

但更好的方法來做到這一點是使用leterCount.items字典的「項目method:爲B,A()來訪問字典的鍵/值對:`

說了這麼多,你知道, 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}) 
1

我想,你想要的東西l IKE在此:

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