将子列表转换为字典

2024-05-15 07:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前拥有以下子列表:

[['jjj', '3', 'bbb', '0', 'ddd', '9', 'ggg', '8', 'hhh', '2'],
 ['ccc', '2', 'ddd', '0', 'aaa', '3', 'hhh', '9'],
 ['ddd', '2', 'ggg', '5', 'ccc', '6', 'jjj', '1'],
 ['hhh', '9', 'iii', '5', 'eee', '7', 'bbb', '1'],
 ['iii', '6', 'ddd', '5', 'eee', '4', 'jjj', '3']]

我想做的是在单个字典中转换这些列表,每个列表中的每个键都有特定的值

例如

{'jjj': ['3','1','3'],
 'bbb': ['0','1'],
 'ddd': ['9','0','2,'5']}

Tags: 列表字典iiibbbcccdddaaahhh
2条回答

您可以尝试创建一个简单的循环来遍历嵌套列表,并基于键值创建字典。这是你可以做到的

x = [['jjj', '3', 'bbb', '0', 'ddd', '9', 'ggg', '8', 'hhh', '2'],
     ['ccc', '2', 'ddd', '0', 'aaa', '3', 'hhh', '9'],
     ['ddd', '2', 'ggg', '5', 'ccc', '6', 'jjj', '1'],
     ['hhh', '9', 'iii', '5', 'eee', '7', 'bbb', '1'],
     ['iii', '6', 'ddd', '5', 'eee', '4', 'jjj', '3']]

y = {}
for i in x:
    for j in range (0, len(i),2):
        if i[j] in y.keys(): #if key already exists, add to list
            y[i[j]].append(i[j+1])
        else: #if key does not exist, create a list
            y[i[j]] = list(i[j+1])
print (y)

您的输出将是:

{'jjj': ['3', '1', '3'], 'bbb': ['0', '1'], 'ddd': ['9', '0', '2', '5'], 'ggg': ['8', '5'], 'hhh': ['2', '9', '9'], 'ccc': ['2', '6'], 'aaa': ['3'], 'iii': ['5', '6'], 'eee': ['7', '4']}

试试这个:

import collections

D=collections.defaultdict(list)

for sublist in main_list:
    for k in range(len(sublist)//2):
        D[sublist[2*k]].append(sublist[2*k+1])

或者,如果您只想使用简单的词典:

D=dict()

for sublist in main_list:
    for k in range(len(sublist)//2):
        key=sublist[2*k]
        value=sublist[2*k+1]
        current=D.get(key)
        if current is None:
            D[key]=[value]
        else:
            current.append(value)

相关问题 更多 >