如何在Python中自动创建字典

露西·L

我正在尝试编写解决数独难题的python代码。我的代码从列出每个行/列组合或每个框的坐标开始。接下来,我想为每种包装盒找到一种参考其位置的方法。这是我当前的代码:

boxes = []
for i in range(1, 10):
    for x in range(1,10):
        boxes = boxes + ['r'+str(i)+'c'+str(x)]
for box in boxes:

接下来,我将为每个字典创建一个字典,但是我希望每个字典都由列表项命名。字典将是,例如,r1c1 = {'行':'1','列':1}。

分离和存储此信息的最佳方法是什么?

马丁·彼得斯(Martijn Pieters)

您无需创建所有这些字典。您已经有了坐标,只是不要将它们锁定在字符串中:

boxes = []
for i in range(1, 10):
    for x in range(1,10):
        boxes.append((i, x))

(row, column)而是创建一个元组列表,然后您不必将它们映射回去。

即使您需要将字符串与数据相关联,也可以在嵌套字典中这样做

coordinates = {
    'r1c1': {'row': 1, 'column': 1},
    # ...
}

但您也可以解析该字符串并提取之后的数字,r然后c再次产生行和列的数字。

实际上,我曾经根据相同的原理编写过Sudoku检查器。在下面的代码中block_indicesper9()zip(*per9(s))为拼图的每个块,行或列生成索引,让您验证每个块中有9个唯一值。唯一的区别是,我使用一个长长的列表代替一个矩阵,而不是一个矩阵,所有元素逐行包括在顺序中:

from itertools import product

block_indices = [[x + y + s for s in (0, 1, 2, 9, 10, 11, 18, 19, 20)]
                 for x, y in product(range(0, 81, 27), range(0, 9, 3))]

def per9(iterable):
    # group iterable in chunks of 9
    return zip(*([iter(iterable)] * 9))

def is_valid_sudoku(s):
    return (
        # rows
        all(len(set(r)) == 9 for r in per9(s)) and
        # columns
        all(len(set(c)) == 9 for c in zip(*per9(s))) and
        # blocks
        all(len(set(s[i] for i in ix)) == 9 for ix in block_indices)
    )

因此,第1行第4列为平面列表中的1 * 9 + 4 =索引13。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Python中创建字典的字典

来自分类Dev

如何在Python中创建字典的字典

来自分类Dev

如何在python中创建嵌套字典

来自分类Dev

如何在python3中创建字典?

来自分类Dev

如何在python中从数组和列表创建字典?

来自分类Dev

如何在python中创建具有某些值的字典

来自分类Dev

如何在SourceTree中自动创建标签

来自分类Dev

如何在Android中自动创建ImageView

来自分类Dev

如何在本体中自动创建类?

来自分类Dev

如何从python字典列表中创建范围?

来自分类Dev

如何在python中的字典元素列表中访问字典?

来自分类Dev

如何在python中的字典中访问字典的值

来自分类Dev

如何在Java中创建类似于以下python字典的字典并一次输入多个值?

来自分类Dev

如何在Python中为特定键创建列表作为字典条目?

来自分类Dev

如何在python中基于给定数字创建多个字典?

来自分类Dev

如何在字典中创建列表而不重复某些键[Python]?

来自分类Dev

如何在Python中对字典排序?

来自分类Dev

如何在Python中模拟字典

来自分类Dev

==如何在python中为字典工作

来自分类Dev

如何在Python中迭代字典代理?

来自分类Dev

如何在python中制作嵌套字典?

来自分类Dev

如何在python中解析字典

来自分类Dev

如何在Python中打印字典

来自分类Dev

如何在python中阅读字典?

来自分类Dev

在python中创建字典

来自分类Dev

如何在python的字典中获取字典

来自分类Dev

如何在Python的字典中获取字典的路径?

来自分类Dev

如何在以字典为值的python中编辑字典值?

来自分类Dev

如何在python中动态追加字典的字典?