我正在将嵌套字典的三个级别转换为数据帧。
我在网上找到了一个代码,它确实有效。作为一个新手,如果可能的话,我只是在这个平台上寻找代码的解释。
你能向我解释一下粗体的那一行吗?它是如何进入字典并转换数据的?
有效的代码是:
csv = pd.DataFrame.from_dict({**(i,j): data_df[i][j]**
for i in data_df.keys()
for j in data_df[i].keys()},
orient='index')
所以我猜data_df
是一本字典。
因此以下内容:
{(i,j): data_df[i][j] for i in data_df.keys() for j in data_df[i].keys()}
只是一本字典的理解。它取父关键字i
和子关键字j
中的一个,并使用它们中的元组(i,j)
作为字典的新关键字,并使用子关键字j
值作为新值。
这基本上就是它的作用。
为了强调这一点,让我们看看下面的例子:
d = {"apple": {"a":1,"b":2}, "orange": {"a":3, "b":4}}
new_d = {(i,j): d[i][j] for i in d.keys() for j in d[i].keys()}
print(new_d) # {('apple', 'a'): 1, ('apple', 'b'): 2, ('orange', 'a'): 3, ('orange', 'b'): 4}
阅读字典压缩的另一个链接