2014-01-20 31 views
0

有什麼辦法給Python中的數組中的鍵賦值?將值傳遞給Python中的數組索引

例在PHP中:

$inputArr = array(
       'vertex'=>values[0], 
       'visited'=>values[1], 
       'letter' => $values[2] 
       ) 

這是我嘗試在Python做的方式:你想用dicts

file_name = input('Enter a file name: ') 
f = open(file_name, 'r') 
data = f.readlines() //Read the lines 
for line in data: 
     values = line.split(' ') Split line following the spaces 
     inputArr = array(
       'vertex'=>values[0], //Pass each value to a key in that array 
       'visited'=>values[1], 
       'letter' => $values[2] 
       ) 
     print (inputArr) 
+0

你在你的 '信' 線路上有一個錯誤 - > '信'=> $值[2]。另外,python中的數組是dicts。所以請嘗試使用字典 – virtuexru

回答

6

:但是

array = { 
    'vertex': values[0], 
    'visited': values[1], 
    'letter': values[2], 
} 
# access via array['vertex'] 

注意,這是否不是保存順序。迭代字典可以產生任意順序。在Python的最新版本中有一個OrderedDict類,但是請記住它比普通的dict需要兩倍多的內存。

如果陣列是固定的,只有那些3個元素,它可能是更好地使用namedtuple

from collections import namedtuple 

NamedSeq = namedtuple('NamedSeq', ('vertex', 'visited', 'letter')) 

array = NamedSeq(values[0], values[1], values[2]) 
#or 
array = NamedSeq(vertex=values[0], letter=values[2], visited=values[1]) 

這會保留訂單,您可以通過array.vertex等 訪問vertex或者你可以訪問使用array[0]的數據的vertex值,array[1]visited

注意,然而該namedtuple s爲immutabl e,即你不能修改它們。

+0

非常感謝你:) –

1

@ Bakuriu的答案是正確

你也可以做這樣的事情:

for line in data: 
    vertex, visited, letter = line.split() # space is default 
    print vertex, visited, letter