Python 使用具有循环的元组键创建字典

Python 使用具有循环的元组键创建字典,python,dictionary,Python,Dictionary,我正在尝试创建一个以元组为键的字典 例如,如果我的范围是(0,3),我想创建一个字典,其中包含每个组合的映射。例如,{(0,0):1,(0,1):2,(0,2):1…},其中值是一个在元组中不存在的int 如果范围为(0,4),字典将如下所示: {(0,1,2):3, (0,0,0):1, (0,0,1):2...} 唯一的规则是键必须是元组中不包含且在给定范围内的值 希望这是有道理的。我一直在试图弄清楚如何用python编写代码来实现这一点,但我不知道该怎么做 编辑完整示例: 范围:(0,3

我正在尝试创建一个以元组为键的字典

例如,如果我的范围是(0,3),我想创建一个字典,其中包含每个组合的映射。例如,
{(0,0):1,(0,1):2,(0,2):1…}
,其中值是一个在元组中不存在的int

如果范围为(0,4),字典将如下所示:

{(0,1,2):3, (0,0,0):1, (0,0,1):2...}
唯一的规则是键必须是元组中不包含且在给定范围内的值

希望这是有道理的。我一直在试图弄清楚如何用python编写代码来实现这一点,但我不知道该怎么做

编辑完整示例: 范围:(0,3)

Dict创建:

{(0,0):1, (0,1):2, (0,2):1, (1,0):2, (1,1):2, (1,2): 0, (2,0): 1, (2,1):0, (2:2):1} 
是的,对于某些组合,例如(1,1),有多个可能的值。它可以是
(1,1):0
(1,1):2
。不过我只需要一个

使用,您可以创建所有关键点。然后,您只需要找到一个在您的范围内但不在键中的值,可以使用以下方法解决:


只要您不期望差异有一个特定的值,它就应该工作。集合是无序的,因此该方法总是从“剩余”集合中给出一个“随机”值。

您的组合是替换的,因此在大多数情况下,元组中不包含的值不止一个。我不明白。范围是否始终为
(0,x)
?元组的长度总是
x-1
?你能提供一个完整的例子吗。像@Rawing一样,我仍然不清楚你到底在问什么。提供了完整的示例为什么要在
可能的情况下创建迭代器。difference(k).pop()
@MosesKoledoye谢谢你的建议。那肯定更干净。
>>> import itertools

>>> the_range = range(0, 3)
>>> possible = set(the_range)

>>> {key: possible.difference(key).pop() for key in itertools.product(the_range, repeat=len(the_range)-1)}
{(0, 1): 2, (1, 2): 0, (0, 0): 1, (2, 0): 1, (1, 0): 2, (2, 2): 0, (0, 2): 1, (2, 1): 0, (1, 1): 0}