有没有办法在python中创建一个单词数组?

wd2eg0qa  于 2023-02-01  发布在  Python
关注(0)|答案(1)|浏览(172)

我是一个Python初学者,我的愿望是创建一个n行n列的数组。我有一个单词字典,我需要把它们放在一个n*n数组中。provisions ={'cake':'20','eggs':'10','tomato':'4','potatos':'2','bread':'4'}

| /  | 1           | 2            |
| 1  | cake        | eggs         |
| 2  | tomatoes    | potatoes     |

这是我想要的一个例子。我们这里有一个2行2列的数组。我可以有一个超过5个元素的字典。这只是一个例子。

import string

provisions = {'cake':'20','eggs':'10','tomatoes':'4','potatoes':'2','bread':'3'} 
tab = []

#i can modify the n for having an array of n*n no matter if provisions has more elements

n = 2
j = 0
i = 0

if provisions:
    for k,v in provisions.items():
        while i<n:
            while j<n:
                print(f"{k}")
                tab[[i],[j]] = provisions[i]
                j += 1
            i += 1
mrphzbgm

mrphzbgm1#

你可以试试下面的代码:迭代dict,计算当前索引(m变量),并计算在矩阵中的位置。

import math

provisions = {'cake': '20', 'eggs': '10', 'tomatoes': '4', 'potatoes': '2', 'bread': '3'}

n = 2
# init matrix
tab = [[0 for x in range(n)] for y in range(n)]

# I can modify the n for having an array of n*n no
# matter if provisions has more elements

# index in the dict
m = 0
if provisions:
    for k, v in provisions.items():
        # prevent index overflow
        if m < n * n:
            # compute position in matrix
            tab[math.floor(m / n)][m % n] = k
            m = m + 1

print(tab)

如果要确定position tab[i][`j`]的元素,首先获取此元素的索引:i * n + j(dict中的第一个元素是0)。不幸的是,仍然没有专门的方法来索引到字典的keys()/values()中,您可以在this answer中找到一些东西。

相关问题