2017-07-04 97 views
2

我想通過將字典鍵和numpy數組拼接成列表來拼成一個新的元組。不過,我得到這個錯誤從列表和字典中創建新的元組

TypeError: list indices must be integers, not tuple 

這裏是我的代碼

import numpy 
import random 


print(ly) 
{(1, 3): 2, (5, 2): 1, (10, 1): 0} 

def myFun(layout): 
    possibilities = numpy.zeros(shape=(4,2)) 
    possibilities[0] = [1, 0] 
    possibilities[1] = [-1, 0] 
    possibilities[2] = [0, 1] 
    possibilities[3] = [0, -1] 

    newLayout = tuple() 
    for i in layout: 
     randomDirection = random.choice(possibilities) 
     newLayout = newLayout + layout.keys()[i] + list(randomDirection) 

解釋說明此行

newLayout = newLayout + layout.keys()[i] + list(randomDirection) 

是有問題,但我不明白爲什麼

+0

我假設'ly'被傳遞作爲'layout'。 'ly'的鍵是元組,所以'對於我在layout中',意味着''''是一個'元組',你不能用'元組'來索引'list'。注意:Py3中的'layout.keys()'不會返回'list',即使'i'是'int'也會中斷。 – AChampion

+0

你字典的鍵是元組,你正在循環它們,所以'i'的類型是'元組' – Sanket

+0

可以請你分享所需的輸出。 –

回答

3

代替在您的代碼中newLayout = newLayout + layout.keys()[i] + list(randomDirection)

使用以下, newLayout = newLayout + layout[i] + list(randomDirection)

將解決您的問題

+0

從語句 – Sanket

+0

中刪除'.keys()'你試過了上面的語句@ user3067923 – Sanket

+0

我試過了你的建議,但得到以下錯誤「TypeError:只能連接元組(不是」int「)到元組」 – user3067923