2013-02-21 34 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