2017-07-04 21 views
2

辞書キーとnumpy配列をつなぎ合わせて新しいタプルを作成しようとしています。しかし、私はこのエラーここリストと辞書から新しいタプルを作成する

TypeError: list indices must be integers, not tuple 

を取得することはインタプリタが問題であるとして、このライン

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

を示し

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) 

私のコードですが、私は、なぜ

+0

を解決する私はly'がlayout' 'として渡されている'と仮定しています。 'ly'のキーはタプルです。' iはレイアウトのために 'i'が' tuple'を意味し、 'tuple'で' list'をインデックスできません。注意:Py3の 'layout.keys()'は 'list'をもう返さず、' i'が 'int'だったとしても中断します。 – AChampion

+0

あなたはdictキーがタプルであり、あなたがそれらをループしているので、間違いなく 'i'のタイプは' tuple' – 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

関連する問題