Python 如何将混合值放入按字母顺序排列的2d数组中?

Python 如何将混合值放入按字母顺序排列的2d数组中?,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我试图弄清楚如何使用Python读取这种类型的文件并将其插入到2D数组中,我从未真正使用过Python。 文件格式: 1 2 cat 2 3 dog 1 3 fly 需要采用以下格式: numbers = ['1','2''3'] matrix = [ [ 'unknown', 'cat', 'fly' ], [ 'cat', 'unknown', 'dog' ], [ 'fly', 'dog', 'unknown']] 目前我只找到了如何使用字典

我试图弄清楚如何使用Python读取这种类型的文件并将其插入到2D数组中,我从未真正使用过Python。 文件格式:

1 2 cat
2 3 dog
1 3 fly
需要采用以下格式:

numbers = ['1','2''3']
matrix = [ [ 'unknown', 'cat', 'fly' ],
           [ 'cat', 'unknown', 'dog' ],
           [ 'fly', 'dog', 'unknown']]
目前我只找到了如何使用字典,但我真的需要使用2d数组。 对于字典,我有:

d = {}
with open("file.txt") as f:
   for line in f:
   (key, val) = line.split()
   d[int(key)] = val

提前谢谢你

我们将把所有行作为int到string的元组字典读入,然后初始化数组,然后填充它

#build the dict
with open(''file.txt) as infile:
    d = {}
    for line in f:
        x, y, z = line.split()
        d[(int(x), int(y))] = z

#initilize array
max_x, max_y = map(max, zip(*d))
arr = []
for i in range(max_y):
    sub = []
    for j in range(max_x): 
        sub.append('')
    arr.append(sub)

#populate the array
for (x, y), item in d.items():
    arr[y-1][x-1] = item

我们将把所有行作为int到string的元组字典读入,然后初始化数组,然后填充它

#build the dict
with open(''file.txt) as infile:
    d = {}
    for line in f:
        x, y, z = line.split()
        d[(int(x), int(y))] = z

#initilize array
max_x, max_y = map(max, zip(*d))
arr = []
for i in range(max_y):
    sub = []
    for j in range(max_x): 
        sub.append('')
    arr.append(sub)

#populate the array
for (x, y), item in d.items():
    arr[y-1][x-1] = item

你的
for
循环中的缩进错误在读入值之前你知道数组的尺寸吗?你是如何从输入到预期输出的,你能澄清你在做什么或期望什么吗?@PatrickHaugh是的,我知道。文件中的行长度(在本例中为3)在
for
循环中的缩进错误在读入值之前,您知道数组的尺寸吗?从输入到预期输出的过程如何,您能澄清您正在做什么或期望什么吗?@PatrickHaugh是的,我知道。它在文件中的行长度(在本例中为3)谢谢!这很有效。但是现在,如果我想让字符串代替整数,比如说数字=['a','b']列表,并用double代替矩阵中的字符串。那真的不管用。我怀疑这与索引arr[y-1][x-1]=item有关。在这种情况下,您将制作另一个字典,将
['a','b']
映射到整数(它们在矩阵中的位置)。谢谢!这很有效。但是现在,如果我想让字符串代替整数,比如说数字=['a','b']列表,并用double代替矩阵中的字符串。那真的不管用。我怀疑这与索引arr[y-1][x-1]=item有关。在这种情况下,您将制作另一个字典,将
['a','b']
映射到整数(它们在矩阵中的位置)。