有没有办法在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)
答案 0 :(得分:6)
您想使用dict
s:
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]
使用vertex
,array[1]
等visited
的值来访问数据。
请注意,namedtuple
不可变,但您无法修改它们。
答案 1 :(得分:1)
@ Bakuriu的回答是正确的
您也可以这样做:
for line in data:
vertex, visited, letter = line.split() # space is default
print vertex, visited, letter