在Python中将值传递给数组索引

时间:2014-01-20 21:35:44

标签: python

有没有办法在Python中为数组中的键赋值?

PHP中的示例:

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

这是我在Python中尝试的方式:

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)

2 个答案:

答案 0 :(得分:6)

您想使用dicts

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])

这会保留订单,您可以通过vertex等访问array.vertex。 或者,您可以使用array[0]使用vertexarray[1]visited的值来访问数据。

请注意,namedtuple 不可变,但您无法修改它们。

答案 1 :(得分:1)

@ Bakuriu的回答是正确的

您也可以这样做:

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