2017-02-03 3 views
0

Ich versuche, ein Skript zu ändern, das ein Schlüsselpaar verwendet: Wert in einer for-Schleife. Ich muss Änderungen vornehmen, damit die for-Schleife 3 Werte für den Schlüssel anstatt nur 1 annehmen kann. Nicht sicher, wie man darüber geht. Danke im Voraus. Ich bekomme diese Fehlermeldung:Verwenden mehrerer Werte eines Schlüssels in einer for-Schleife

for fileName,readPct,readhPct,writehPct in hpct_file_list.items(): 
    ... 

ValueError: need more than 2 values to unpack 

Hier ist der Code:

hpct_file_list = {'rhpct_50_80_20_tier2': ['80', '50', '0'], 'whpct_50_20_80_tier2': ['20', '0', '50']} 

for fileName,readPct,readhPct,writehPct in hpct_file_list.items(): 
    hostRoot.VmExec("cd C:\\Program Files (x86)\\vdbench") 
    VmCommon.LogMsg('Creating File : %s '%(fileName)) 
    hostRoot.VmExec("echo validate=yes > %s"%(fileName)) 
    hostRoot.VmExec("echo sd=sda, lun=%s, threads=16, hitarea=25m, size=875G >> %s" %(device_name, fileName)) 
    hostRoot.VmExec("echo wd=wd1, sd=sda, xfersize=512, rdpct=%s, rhpct=%s, whpct=%s, seekpct=random >> %s" % (readPct, readhPct, writehPct, fileName)) 
    hostRoot.VmExec("echo wd=wd2, sd=sda, xfersize=1k, rdpct=%s, rhpct=%s, whpct=%s, seekpct=random >> %s" % (readPct, readhPct, writehPct, fileName)) 

Antwort

1

items gibt ein list von zwei tuple s der Schlüssel und Wert, ist es nicht den Wert für Sie glätten, so Es kann nicht in vier Namen auf der gleichen Ebene ausgepackt werden. Python unterstützt, obwohl diese, Sie fügen Sie einfach zusätzliche Klammern um die Namen, die aus dem Teilfolge ausgepackt werden sollen:

for fileName, (readPct, readhPct, writehPct) in hpct_file_list.items(): 

der Schlüssel direkt in fileName auspackt, während der Wert ein zweites Mal auspacken (so müssen die Werte sein Länge 3) zum Befüllen readPct, readhPct, writehPct.

Randbemerkung: Möglicherweise möchten Sie iteritems statt items verwenden, um eine potenziell große temporäre list zu vermeiden; iteritems wird die dict direkt ohne temporäre große Datenstrukturen iterieren.

Verwandte Themen