有没有更简单/ pythonic的方式来编写此代码?

时间:2018-09-24 09:41:50

标签: python pandas dictionary dataframe nested

我想使我的代码更快。而且我想知道我是否可以用更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方法吗?

谢谢您的帮助:)

0 个答案:

没有答案