2016-05-25 19 views
0

私は2つのリストを持っていて、それらのディクテーションを作成したいと言います。vimlで2つのリストを使って辞書を作成しますか?

a = ['a', 'b', 'c'] 
b = ['foo', 'bar', 'baz'] 
dict = { 'a':'foo', 'b':'bar', 'c': 'baz' } 

VIMLのスクリプト言語で、これを達成する方法:最初のものは、キー2つ目は、値になりますになるのだろうか? これを実現するためにpythonにzip()のような関数がありますか?

+1

':ヘルプリスト-functions'と':ヘルプのdict-functions'。 – romainl

+0

確かに;)ちょうど追跡するためにいくつかのニトロを必要としました。 – dNitro

答えて

2

私は恐れているマニュアルループで、この種のzip関数を自分で実装する必要があります。例えば

function! lh#list#zip_as_dict(l1, l2) abort 
    if len(a:l1) != len(a:l2) 
    throw "Zip operation cannot be performed on lists of different sizes" 
    endif 
    let res = {} 
    let idx = range(0, len(a:l1)-1) 
    for i in idx 
    let res[a:l1[i]] = a:l2[i] 
    endfor 
    return res 
endfunction 
+0

ありがとうございます。完璧なソリューション。だから少なくとも今はvimlのzip()関数がある。 – dNitro

+0

私は[ライブラリプラグイン](https://github.com/LucHermitte/lh-vim-lib)と 'lh#list#zip()'関数と一緒にプッシュしました。 –

関連する問題