字典列表列表

问题描述 投票:1回答:2

我有一个列表列表:[['1','Kate','Green','North'],['2','John','Blue','North'],['3' ,“简”,“红色”,“北南方”],['4','刘易斯','蓝色','东部']]

我想制作字典:{'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'}谁能帮助我解决这个逻辑错误?

编辑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'
python python-3.x list dictionary dictionary-comprehension
2个回答
2
投票

尝试使用dict理解:

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

3
投票

好像您的问题已经回答了,但是这里的另一个答案与您的格式更相似,可以帮助您更好地理解逻辑。

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)
© www.soinside.com 2019 - 2024. All rights reserved.