[英]ValueError: too many values to unpack (expected 3) while testing zip function
我正在嘗試使用簡單的腳本測試 zip function。 這是我的代碼:
list1os = [1,2,3,4,5,6,7,8,9,10]
List1is = [11,12,13]
List1name = ['Stacey']
list2os = [6,7,8,9,10,11,12,13,14,15]
List2is = [14,15,16]
List2name = ['Donna']
list3 = [3,4,5,6,7,8]
test1=[]
test2=[]
inst_chunk_of_values_id=[]
#Creating data to test
test1.append(List1is)
test1.append(list1os)
test1.append(List1name)
test2.append(List2is)
test2.append(list2os)
test2.append(List2name)
inst_chunk_of_values_id.append(test1)
inst_chunk_of_values_id.append(test2)
#trying to split up the dataset here
for chunk1,chunk2 in zip(inst_chunk_of_values_id[0],inst_chunk_of_values_id[1]):
print(chunk1)
os_range1,is_range1,chk_roll_id1 = chunk1
os_range2,is_range2,_=chunk2
我正在嘗試通過inst_chunk_of_values_id
function 傳遞 inst_chunk_of_values_id。
inst_chunk_of_values_id
看起來像:
[[[11, 12, 13], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ['Stacey']], [[14, 15, 16], [6, 7, 8, 9, 10, 11, 12, 13, 14, 15], ['Donna']]]
我正在嘗試分配給數據,所以我想要的 output 看起來像:
os_range1 = [11, 12, 13]
is_range1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chk_roll_id1 = ['Stacey']
os_range2 = [14, 15, 16]
is_range2 = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
chk_roll_id2 = ['Donna']
但我收到以下錯誤:
os_range1,is_range1,chk_roll_id1 = chunk1
ValueError: too many values to unpack (expected 3)
為什么我會得到這個?
dict
可能更容易Stacey
和Donna
,因此下面的代碼將允許您解壓任意數量的案例。dictionaries
對於創建許多變量更有用。import numpy as np
names = ['Stacey', 'Donna', 'Sam', 'Don']
np.random.seed(365)
test = {name: [list(np.random.randint(10, size=3)), list(np.random.randint(10, size=10)), [name]] for name in names}
test_zip = list(zip(*test.values()))
print(test_zip)
[([2, 4, 1], [7, 7, 0], [1, 6, 5], [0, 1, 4]),
([5, 2, 2, 9, 8, 4, 0, 3, 3, 7],
[8, 4, 3, 2, 6, 2, 6, 8, 9, 6],
[7, 7, 6, 5, 9, 3, 8, 7, 9, 9],
[0, 9, 6, 5, 6, 9, 5, 3, 2, 7]),
(['Stacey'], ['Donna'], ['Sam'], ['Don'])]
data = dict()
for i, c in enumerate(test_zip, start=1):
if i == 1:
for i, x in enumerate(c, start=1):
data[f'os_range{i}'] = x
if i == 2:
for i, x in enumerate(c, start=1):
data[f'is_range{i}'] = x
if i == 3:
for i, x in enumerate(c, start=1):
data[f'chk_roll_id{i}'] = x
print(data)
{'os_range1': [2, 4, 1],
'os_range2': [7, 7, 0],
'os_range3': [1, 6, 5],
'os_range4': [0, 1, 4],
'is_range1': [5, 2, 2, 9, 8, 4, 0, 3, 3, 7],
'is_range2': [8, 4, 3, 2, 6, 2, 6, 8, 9, 6],
'is_range3': [7, 7, 6, 5, 9, 3, 8, 7, 9, 9],
'is_range4': [0, 9, 6, 5, 6, 9, 5, 3, 2, 7],
'chk_roll_id1': ['Stacey'],
'chk_roll_id2': ['Donna'],
'chk_roll_id3': ['Sam'],
'chk_roll_id4': ['Don']}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.