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

Osa*_*war 0 python

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

PHP中的示例:

$inputArr = array(
                'vertex'=>values[0],
                'visited'=>values[1],
                'letter' => $values[2]
                )
Run Code Online (Sandbox Code Playgroud)

这是我在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)
Run Code Online (Sandbox Code Playgroud)

Bak*_*riu 6

你想用dicts:

array = {
    'vertex': values[0],
    'visited': values[1],
    'letter': values[2],
}
# access via array['vertex']
Run Code Online (Sandbox Code Playgroud)

但是请注意,这并没有保留的顺序.迭代字典可以产生任意顺序.OrderedDict最新版本的python中有一个类,但请记住,它需要的内存是普通版本的两倍多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])
Run Code Online (Sandbox Code Playgroud)

这将保留该命令,您可以访问vertex通过array.vertex等,或者您也可以访问使用数据array[0]的价值vertex,array[1]visited

请注意,然而,namedtuples是不可变的,即您无法修改它们.