2017-02-19 43 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

您可以使用字典解析:

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]} 

如果你是在python2 ,似乎你不能使用*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 lst}'。 – JRodDynamite

+1

@JRodDynamite這會打開另一個Py2與Py3的問題,你需要'list(map(int,x [1:]))'。 – schwobaseggl

+0

@JRodDynamite我認爲你的評論是一個很好的補充,在python 3的情況下:'{k:list(map(int,v))for k,* v in lst}' – Psidom

1

一個dict理解編譯字典有list理解的字符串轉換爲int

> 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

一種簡單的方法:

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) 

list隨着和dict理解:

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

在這兩種情況下,輸出:

{'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)