从两个独立列表的所有组合创建字典
我在网上找到了一段很有用的代码:
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}
但显然这样做不行。这能实现吗?如果可以的话,应该怎么做呢?
4 个回答
1
先从你的第一个例子开始:
x=[1,2,3,4]
y=[1,2,3,4]
combos=[(`i`+`n`) for i in x for n in y]
然后再加上:
combinations = {i: c for i, c in enumerate(combos)}
1
你可能不想这样做。至少,从我看来,没有什么特别好的理由需要这样。如果你想追踪它们的位置,结果应该是一个列表,而它现在就是一个列表。如果你需要知道索引,你可以这样做:
for idx, combo in enumerate(combinations):
print idx+1, combo
如果你确实需要通过位置(以及列表索引加1)来访问它们,你可以这样做:
lookup = dict((idx+1, combo) for idx, combo in enumerate(combinations))
7
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转化成一种特定的格式。
比如说,如果你有一个数字的字符串“123”,程序可能会把它当成文本,而不是数字。为了让程序能够进行数学运算,我们需要把这个字符串转换成数字类型。这个过程就叫做“类型转换”。
在不同的编程语言中,类型转换的方法可能会有所不同,但基本的思路是一样的。你可以想象成把一个东西放进一个盒子里,盒子有不同的形状,只有合适的东西才能放进去。
总之,理解数据的类型和如何转换它们是编程中非常重要的一部分,这样才能让程序正确地处理和使用这些数据。
combos = [str(i) + str(n) for i in x for n in y] # or `i`+`n`, () for a generator
combinations = dict((i+1,c) for i,c in enumerate(combos))
# Only in Python 2.6 and newer:
combinations = dict(enumerate(combos, 1))
# Only in Python 2.7 and newer:
combinations = {i+1:c for i,c in enumerate(combos)}