You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何创建n×n单词数组?从字典填充方法求助

修正后的n×n数组填充实现

原代码存在的问题

  • 空列表tab直接通过索引赋值会报错,因为没有预先创建行和列结构
  • 嵌套while循环与字典遍历的for循环逻辑冲突,导致填充逻辑混乱
  • 字典无法通过provisions[i]这种索引方式访问元素,字典是键值对结构,需转成列表后按索引访问
  • 未处理字典元素数量与n²的匹配问题,多余元素未被合理截断

修正代码示例(填充字典键)

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

# 将字典的键转为有序列表(Python3.7+字典默认保持插入顺序)
prov_keys = list(provisions.keys())
# 初始化n行n列的二维数组,默认填充None
tab = [[None for _ in range(n)] for _ in range(n)]

# 遍历数组每个位置,按顺序填充元素
for i in range(n):
    for j in range(n):
        # 计算当前位置对应的元素索引
        element_idx = i * n + j
        # 仅当索引小于字典元素数量时填充
        if element_idx < len(prov_keys):
            tab[i][j] = prov_keys[element_idx]

# 打印验证结果
for row in tab:
    print(row)

运行结果:

['cake', 'eggs']
['tomatoes', 'potatoes']

扩展:填充键值对

如果需要同时显示键和对应的值,可以修改如下:

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

# 提取字典的键值对列表
prov_items = list(provisions.items())
tab = [[None for _ in range(n)] for _ in range(n)]

for i in range(n):
    for j in range(n):
        element_idx = i * n + j
        if element_idx < len(prov_items):
            key, value = prov_items[element_idx]
            tab[i][j] = f"{key}: {value}"

for row in tab:
    print(row)

运行结果:

['cake: 20', 'eggs: 10']
['tomatoes: 4', 'potatoes: 2']

关键说明

  • 使用[[None for _ in range(n)] for _ in range(n)]正确初始化二维数组,避免浅拷贝问题
  • 通过element_idx = i * n + j将二维坐标转为一维索引,保证按顺序填充字典元素
  • 当字典元素数量多于n²时,自动截取前n²个元素;如果元素不足,剩余位置保留None(可自行修改为默认值,比如空字符串)

内容的提问来源于stack exchange,提问作者Lourna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:10:24