2017-02-19 12 views
1

私は、各リストの最初の値がキーである4値辞書に変換したいリストのリストを持っています。したがって、たとえばリストは次のようになります。リストを多値辞書に変換する方法

[['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]] 

と私はそれになりたい

{"267-10-7633":[66,85,74,0], "709-40-8165", [71,96,34,0] } 

答えて

3

あなたは辞書内包表記を使用することができます:あなたはpython2上にある場合

lst = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]] 

{k: v for k, *v in lst}  
# {'267-10-7633': ['66', '85', '74', 0], '709-40-8165': ['71', '96', '34', 0]} 

を複数の要素を解凍するのに*vを使用できないようです:

{x[0]: x[1:] for x in lst} 
# {'267-10-7633': ['66', '85', '74', 0], '709-40-8165': ['71', '96', '34', 0]} 

ここで型変換は行いませんでした。私はあなたがそれを行う方法について他の答えを参照することができると思います。

+1

質問によると、私はあなたのリストに整数に文字列を変換するべきだと思います。 Py2 ver: '{x [0]:map(int、x [1:])for x in first}'。 – JRodDynamite

+1

@JRodDynamiteこれは、 'list(map(int、x [1:]))'が必要なPy2とPy3の別の問題を開くでしょう。 – schwobaseggl

+0

@JRodDynamiteあなたのコメントは、python 3の場合、答えの良い補足と思います: '{k:list(map、int、v)for k、* v in lst}' – Psidom

1

intに文字列を変換するためにlist理解して辞書をコンパイルするdict読解:

> lst = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]] 
> {l[0]: [int(x) for x in l[1:]] for l in lst} 
{'267-10-7633': [66, 85, 74, 0], '709-40-8165': [71, 96, 34, 0]} 
0

シンプルでまっすぐ進むソリューション。

lst = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]] 

# create an empty dict 
new_dict = {} 

# iterate through the list 
for item in lst: 

    # key is first element in the inner list 
    # value is second element in the inner list 
    key = item[0] 
    value = item[1:] 
    new_dict[key] = value 

print new_dict 
0

リスト内包

{element[0]: [int(x) for x in element[1:]] for element in\ 
    [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]} 
0

この場合には、単純なアプローチに適している:listdict理解して

your_list = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]] 

dictionary = {} 
for item in your_list: 
    dictionary[item[0]] = [int(i) for i in item[1:]] 

print(dictionary) 

いずれの場合も0

、出力:

{'267-10-7633': [66, 85, 74, 0], '709-40-8165': [71, 96, 34, 0]} 
0
ll = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]] 

mydict = {} 
for item in ll: 
    key,*values = item 
    mydict[key] = values 

print(mydict) 
関連する問題