我有一个带有调查详细信息的数据框。下面是这些列的简要摘录:
`['Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q9', 'Q10', 'Q12_MULTIPLE_CHOICE',
'Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4', 'Q13_Part_5',
'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8', 'Q13_Part_9', 'Q13_Part_10',
'Q13_Part_11', 'Q13_Part_12', 'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15',
'Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4', 'Q15_Part_5',
'Q15_Part_6', 'Q15_Part_7']`
我想创建一个包含“带有零件的问题”的字典,也就是说,字典的键将是问题编号,而值将是零件的列表。
例如:
mydict= {
'Q13': ['Q13_Part_1', 'Q13_Part_2',... ],
'Q15': ['Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4',
'Q15_Part_5', 'Q15_Part_6', 'Q15_Part_7'],
..
}
我该如何处理?
答案 0 :(得分:0)
使用defaultdict
作为存储值:
L = ['Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q9', 'Q10', 'Q12_MULTIPLE_CHOICE',
'Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4', 'Q13_Part_5',
'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8', 'Q13_Part_9', 'Q13_Part_10',
'Q13_Part_11', 'Q13_Part_12', 'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15',
'Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4', 'Q15_Part_5',
'Q15_Part_6', 'Q15_Part_7']
from collections import defaultdict
d = defaultdict(list)
for x in L:
if '_' in x:
d[x.split('_')[0]].append(x)
print (d)
defaultdict(<class 'list'>, {'Q12': ['Q12_MULTIPLE_CHOICE'],
'Q13': ['Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4',
'Q13_Part_5', 'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8',
'Q13_Part_9', 'Q13_Part_10', 'Q13_Part_11', 'Q13_Part_12',
'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15'],
'Q15': ['Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4',
'Q15_Part_5', 'Q15_Part_6', 'Q15_Part_7']})
print (dict(d))
{'Q12': ['Q12_MULTIPLE_CHOICE'],
'Q13': ['Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4',
'Q13_Part_5', 'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8',
'Q13_Part_9', 'Q13_Part_10', 'Q13_Part_11', 'Q13_Part_12',
'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15'],
'Q15': ['Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3',
'Q15_Part_4', 'Q15_Part_5', 'Q15_Part_6', 'Q15_Part_7']}