我有這個代碼(Python 3.9):
vdam = {"mirror": 0, "door": 1, "windShield": 2}
vdam2 = list(vdam.items())
vdam3 = [a[0] for a in vdam2]
vdam4 = ' '.join([str(ele) for ele in vdam3])
a, b, c, d, e, f, g = vdam4.split()
我想將字串拆分為多個變數,但同時,如果沒有足夠的值進行拆分,所有其他左側變數都會被分配為特定值。上面的代碼產生錯誤:ValueError: not enough values to unpack (expected 7, got 3)
uj5u.com熱心網友回復:
將默認值附加到串列中,使其包含與變數數相等的元素數。然后分配給他們。
vdam5 = vdam4.split()
if len(vdam5) < 7:
vdam5 = [None] * (7 - len(vdam5))
a, b, c, d, e, f, g = vdam5
uj5u.com熱心網友回復:
vdam2-vdam4不需要,也不需要.split()。列出鍵并附加足夠的默認值來處理 0-7 個引數。最后*_捕獲多余的專案:
>>> vdam = {"mirror": 0, "door": 1, "windShield": 2}
>>> a,b,c,d,e,f,g,*_ = list(vdam.keys()) [None]*7
>>> a,b,c,d,e,f,g
('mirror', 'door', 'windShield', None, None, None, None)
如果您有不同的默認值,這可以通過將鍵擴展為函式的引數來實作:
>>> vdam = {"mirror": 0, "door": 1, "windShield": 2}
>>> a,b,c,d,e,f,g,*_ = list(vdam.keys()) [None]*7
>>> a,b,c,d,e,f,g
('mirror', 'door', 'windShield', None, None, None, None)
>>> def func(a=1,b=2,c=3,d=4,e=5,f=6,g=7):
... return a,b,c,d,e,f,g
...
>>> a,b,c,d,e,f,g = func(*vdam.keys())
>>> print(a,b,c,d,e,f,g)
mirror door windShield 4 5 6 7
請注意func(*vdam4.split()),如果您有一個以空格分隔的字串,您也可以使用它。
uj5u.com熱心網友回復:
這是一個建議
def fit(x,y,z): #x:string, y:expected length, z:replacement value
while len(x)<y:
x =z
return x
vdam = {"mirror": 0, "door": 1, "windShield": 2}
vdam2 = list(vdam.items())
vdam3 = [a[0] for a in vdam2]
vdam4 = ' '.join([str(ele) for ele in vdam3])
a, b, c, d, e, f, g = fit(vdam4.split(),7,'A')
mirror door windShield A A A A
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/346095.html
上一篇:使用.take()索引多維陣列
