我想使我的代码更快。而且我想知道我是否可以用更pythonic的方式或单线地编写这部分代码,这样会更快一些。
我首先尝试使用以下方法从嵌套字典中删除所有空值
def remove_empties_from_dict(combined_dict):
new_dict = {}
for k, v in combined_dict.items():
if isinstance(v, dict):
v = remove_empties_from_dict(v)
if v is not None:
new_dict[k] = v
return new_dict or None
如果我尝试一个衬里dict((k, v) for k, v in combined_dict.iteritems() if v)
,则只会删除最后一个值中的任何值,而不删除整个嵌套字典中的值。示例:
combined_dict = {1: {'a': {}, 'b': {}}, 2: {'c': {100: None}}, 3: {'d: {}, 'f': {1007: {'random_stirng': u'random_intiger'}
我希望combined_dict = {3: 'f': {1007: {'random_stirng': u'random_intiger'}
具有单线。
第二点是我想将嵌套字典转换为列表,以便可以更有效地将其转换为数据框。我编写了这段代码。
new_list = []
for k1 in remove_empties_from_dict(combined_dict):
curr_dict = remove_empties_from_dict(combined_dict)[k1]
for k2 in curr_dict:
curr_dict_2=curr_dict[k2]
for k3 in curr_dict_2:
curr_dict_3=curr_dict_2[k3]
for k4 in curr_dict_3:
curr_dict_4=curr_dict_3[k4]
new_dict= {'c0':k1, 'c1': k2, 'c2': k3, 'c3': k4, 'c4': curr_dict_4}
new_list.append(new_dict)
还有更多的pythonic方法吗?
谢谢您的帮助:)