三级嵌套字典代码解释



我正在将嵌套字典的三个级别转换为数据帧。

我在网上找到了一个代码,它确实有效。作为一个新手,如果可能的话,我只是在这个平台上寻找代码的解释。

你能向我解释一下粗体的那一行吗?它是如何进入字典并转换数据的?

有效的代码是:

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}

阅读字典压缩的另一个链接

最新更新