我目前有以下子列表:
[['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']}
答案 0 :(得分:1)
尝试一下:
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)
答案 1 :(得分:1)
您可以尝试创建一个简单的循环以遍历嵌套列表,并根据键值创建字典。这是您的操作方法。
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']}