我有元組列表:foo = [(1, 5), (1, 3), (1, 9), (2, 8), (2, 3), (3, 1)]我正在嘗試將值從 foo 分配到arrayof 中arrays,結(jié)果應(yīng)如下所示:_result[0] = []_result[1] = [5, 3, 9]_result[2] = [8, 3]_result[3] = [1]這是我的代碼:_result = [[]]for x,y in foo: _result[x].append(y)但我收到一個錯誤:IndexError: list index out of range我應(yīng)該如何解決它?編輯:結(jié)果不必安排零位置的數(shù)組應(yīng)包含一個空字段該示例很簡單,但foo也可以包含其他值,例如:foo = [(9, 5), (10, 3), (10, 9), (5, 8), (5, 3), (9, 1)]結(jié)果:_result[0] = []_result[1] = []_result[2] = []_result[3] = []_result[4] = []_result[5] = [8, 3]_result[6] = []_result[7] = []_result[8] = []_result[9] = [5, 1]_result[10] = [3, 9]所以所有不在位置的值都x應(yīng)該包含an empty field在給定的索引上
2 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個贊
你可以在dict這里使用。
前任:
foo = [(1, 5), (1, 3), (1, 9), (2, 8), (2, 3), (3, 1)]
result = {}
for k, v in foo:
result.setdefault(k, []).append(v)
print(result) # -->{1: [5, 3, 9], 2: [8, 3], 3: [1]}
您也可以使用collections.defaultdict而不是setdefault

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊
length = 0
_result = [[]]
for x, y in foo:
if x > length:
for i in range(x - length):
_result.append([])
length = length + x
_result[x].append(y)
您的代碼中的問題:
您無法訪問列表中不存在項(xiàng)目的索引位置。
您不能追加到不存在的列表。
添加回答
舉報
0/150
提交
取消