Список из списка в словарь - PullRequest
1 голос
/ 26 января 2020

У меня есть список списков: [['1', 'Kate', 'Green', 'North'], ['2', 'John', 'Blue', 'North'], ['3 ',' Jane ',' Red ',' NorthSouth '], [' 4 ',' Lewis ',' Blue ',' East ']]

Я хочу создать словарь: {' 1 ' : ['Kate', 'Green', 'North'], '2': ['John', 'Blue', 'North'], '3': ['Jane', 'Red', 'NorthSouth'] , 4: ['Lewis', 'Blue', 'East']}

В настоящее время мой код:

def li2dict(li):
    final_dict = {}
    for i in range(len(li)):
        for j in range(len(li[j])):
            roster_dict[li[j][0]] = li[j][k]
    print(final_dict)

Однако все, что я получаю, это: {'1' : 'North', '2': 'North', '3': 'NorthSouth', '4': 'East'} Может кто-нибудь помочь мне с этой ошибкой logi c?

Редактировать 1: К вашему сведению, мне не разрешено импортировать любые библиотеки.

Редактировать 2: Я также пытался:

roster_dict[contents[j][0]].append(contents[j][k])

Но я получаю:

File "test.py", line 54, in <module>
    main()
File "test.py", line 51, in main
    li2dict([listinfo])
File "test.py", line 44, in li2dict
    roster_dict[contents[j][0]].append(contents[j][k])
KeyError: '1'

Ответы [ 2 ]

3 голосов
/ 26 января 2020

Похоже, что на ваш вопрос уже был дан ответ, но вот еще один ответ, более похожий на ваш формат, который может помочь вам лучше понять логи c

old_list = [['1','Kate','Green','North'],['2','John','Blue','North'],['3','Jane','Red','NorthSouth'],['4','Lewis','Blue','East']]


def dict_conversion(list_variable):
    dict = {}
    for list in list_variable:
        index_position = list[0]
        list_content = list[1:]
        dict[index_position] = list_content
    print(dict)
    return dict


dict_conversion(old_list)
2 голосов
/ 26 января 2020

Попробуйте использовать диктовку:

d = {i[0]: i[1:] for i in li}

print(d)                                                                                                                                 
{'1': ['Kate', 'Green', 'North'], '2': ['John', 'Blue', 'North'], '3': ['Jane', 'Red', 'NorthSouth'], '4': ['Lewis', 'Blue', 'East']}
...