from numpy import nan
d = {'E1': (((((['C', 'Me', 'Lans'], float(nan), ['3050', '55901']),
float(nan)),
float(nan)),
['2011-09-05 00:00:00', '3050-09-02 00:00:00']),
['2011-09-05 00:00:00', '3050-09-02 00:00:00']),
'E2': (((((['Can', 'Mar', 'Horns'], ['26D']),
['1001', '14086']),
float(nan),
['(100) 300-2345']),
['1001-09-02 00:00:00', '0100-09-02 00:00:00', '2011-19-26 00:00:00']),
['1001-09-02 00:00:00', '0100-09-02 00:00:00', '2011-19-26 00:00:00'])}
我的字典d
看起来很乱。我想要以下输出,其中d
是字典中的列表
d = {'E1': ['C', 'Me', 'Lans', float(nan),'3050', '55901', float(nan)), float(nan), '2011-09-05 00:00:00', '3050-09-02 00:00:00',
'2011-09-05 00:00:00', '3050-09-02 00:00:00'],
'E2': ['Can', 'Mar', 'Horns', '26D','1001', '14086', float(nan),'100 300-2345','1001-09-02 00:00:00', '0100-09-02 00:00:00', '2011-19-26 00:00:00',
'1001-09-02 00:00:00', '0100-09-02 00:00:00', '2011-19-26 00:00:00']}
我已经尝试过代码Flatten nested dictionaries, compressing keys,但是它并没有给我我想要的东西。任何身体都可以帮忙吗?
答案 0 :(得分:1)
您可以使用递归拉平列表和元组的函数:
def flatten(o):
return [s for i in o for s in flatten(i)] if isinstance(o, (list, tuple)) else [o]
使{k: flatten(v) for k, v in d.items()}
返回:
{'E1': ['C',
'Me',
'Lans',
nan,
'3050',
'55901',
nan,
nan,
'2011-09-05 00:00:00',
'3050-09-02 00:00:00',
'2011-09-05 00:00:00',
'3050-09-02 00:00:00'],
'E2': ['Can',
'Mar',
'Horns',
'26D',
'1001',
'14086',
nan,
'(100) 300-2345',
'1001-09-02 00:00:00',
'0100-09-02 00:00:00',
'2011-19-26 00:00:00',
'1001-09-02 00:00:00',
'0100-09-02 00:00:00',
'2011-19-26 00:00:00']}