使用Python中的循环创建交替字典

使用Python中的循环创建交替字典,python,loops,dictionary,clone,theano,Python,Loops,Dictionary,Clone,Theano,我正在尝试创建一个循环字典,使用交替条目,尽管条目不一定需要交替,只要它们都在字典中,我只需要最简单的解决方案就可以将它们全部放在一个字典中。我试图实现的一个简单示例: 通常,为了创建带有循环的字典,我会这样做: {i:9 for i in range(3)} output: {0: 9, 1: 9, 2: 9} 现在我尝试以下方法: {i:9, i+5:8 for i in range(3)} SyntaxError: invalid syntax 所需输出为: {0:9, 5:8, 1:

我正在尝试创建一个循环字典,使用交替条目,尽管条目不一定需要交替,只要它们都在字典中,我只需要最简单的解决方案就可以将它们全部放在一个字典中。我试图实现的一个简单示例:

通常,为了创建带有循环的字典,我会这样做:

{i:9 for i in range(3)}
output: {0: 9, 1: 9, 2: 9}
现在我尝试以下方法:

{i:9, i+5:8 for i in range(3)}
SyntaxError: invalid syntax
所需输出为:

{0:9, 5:8, 1:9, 6:8, 2:9, 7:8}
或者,只要所有元素都在字典中,此输出也可以(顺序无关紧要):

上下文是我正在使用的

theano.clone(cloned_item, replace = {replace1: new_item1, replace2: new_item2})
您要替换的所有项目必须在一个字典中给出


提前谢谢

理解是很酷的,但不是绝对必要的。此外,标准字典不能有重复的键。有,但您也可以尝试为该键创建一个
值列表

d = {}
d[8] = []
for i in range(3):
    d[i] = 9
    d[8].append(i)

对于没有重复键的新示例:

d = {}
for i in range(3):
    d[i] = 9
    d[i+5] = 8


您可以使用
itertools

dict(itertools.chain.from_iterable(((i, 9), (i+5, 8)) for i in range(3)))

解释:

内部部分创建一组元组

((i, 9), (i+5, 8)) for i in range(3)
以列表形式扩展为

[((0, 9), (5, 8)), ((1, 9), (6, 8)), ((2, 9), (7, 8))]
链。from_iterable
然后将其展平一级以产生

[(0, 9), (5, 8), (1, 9), (6, 8), (2, 9), (7, 8)]

这当然适用于采用元组序列的
dict
init

不仅顺序对您来说无关紧要,而且一点也不重要:字典是任意排序的。哦,现在我看到您多次使用了
8
键。这对于一本标准字典来说是不可能的。谢谢。这是一个不幸的例子,在我的情况下,关键是独一无二的。关键是我不知道如何解决使用循环创建它的语法。等等,让我调整一下示例,使其键是唯一的谢谢!这就解决了问题。顺便说一句,这是一个非常好的问题
((i, 9), (i+5, 8)) for i in range(3)
[((0, 9), (5, 8)), ((1, 9), (6, 8)), ((2, 9), (7, 8))]
[(0, 9), (5, 8), (1, 9), (6, 8), (2, 9), (7, 8)]