2017-02-19 3 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:]) для x в lst}'. – JRodDynamite

+1

@JRodDynamite Это откроет еще одну проблему Py2 vs Py3, где вам понадобится «list (map (int, x [1:])). – schwobaseggl

+0

@JRodDynamite Я думаю, что ваш комментарий был хорошим дополнением к ответу в случае python 3: '{k: list (map (int, v)) для k, * v в 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) 
Смежные вопросы