2013-02-21 47 views
0

我有两个列表合并两个列表成为一个字典或者打印出来(最短路径)

a=[0,0.3,0.6] 
b=['x','y','z'] 

我可以使用压缩将它们组合成字典,遍历它(也可用于某些原因拉链更改订单一个)。但我想知道最短的代码(一个衬垫),即采用A,B,并打印出

0 \t 'x' 
0.3 \t 'y' 
0.6 \t 'z' 
+1

字典是没有顺序 – YXD 2013-02-21 10:29:07

+1

'拉链()'不*不*更改输入的顺序。也许你对输入有困惑? – 2013-02-21 10:30:15

回答

2

使用拉链,但没有字典:

print '\n'.join('{} \t {}'.format(aa,bb) for aa,bb in zip(a,b)) 

print '\n'.join(map('{0[0]} \t {0[1]}'.format, zip(a,b))) 
1

这是易用zip

print '\n'.join(str(i)+' \t '+str(j) for i, j in zip(a, b)) 

或者:

print '\n'.join('%d \t %s' % (i, j) for i, j in zip(a, b)) 

或者当然还有eumiro使用的格式。

2

你要创建一个字典的最佳方式是与理解(拉链,虽然...)

{key: value for (key, value) in zip(a,b)} 
0

for/join/map无论你使用,你在一定程度上被迭代。列表理解使得它变得紧凑(或“更短”),print编辑列表也是如此。 map也内部迭代每个元素。

列表理解:

[print("%d\t%d\n"%(i,j)) for i,j in zip(a,b)] 
+0

这只适用于Python 3,最重要的是它的风格非常糟糕。 – Volatility 2013-02-21 10:56:11

+0

@Volatility,你能解释一下这很糟糕吗? – krips89 2013-02-21 11:47:38

+0

List comps应该用来制作列表,而不是多次执行动作。 – Volatility 2013-02-21 21:14:27