【发布时间】:2011-09-12 19:20:12
【问题描述】:
我在互联网的一系列电子管中发现了这段有用的代码:
x=[1,2,3,4]
y=[1,2,3,4]
combos=[(`i`+`n`) for i in x for n in y]
combos
['11','12','13','14','21','22','23','24','31','32','33','34','41','42','43','44']
我正在尝试做的事情如下:
combinations={(i: `n`+`d`) for i in range(16) for n in x for d in y}
combinations
{1: '11', 2: '12', 3: '13', 4: '14', 5: '21', 6: '22'...etc}
但显然这是行不通的。这可以做到吗?如果有,怎么做?
【问题讨论】:
-
你希望字典键是什么?
-
如果可能,只使用指定范围内的数字。
-
请注意,(1) 反引号作为
repr的快捷方式在 3.x 中被删除,即使在 2.x 中也可以说是一个坏主意,(2)itertools模块对此进行了概括和几个相关的算法。另外,如果键是连续的整数,为什么要使用字典?这就是列表的用途。 -
好吧,因为我试图从这个字典生成对象,其名称变量为 'x'+'y' 和另外两个变量分别存储 x 和 y:
for i in adict: alist.append(object(i, int(adict[i][0]), int(adict[i][1])))
标签: python python-2.x