从 python 中的嵌套字典列表创建热图

Creating a heatmap from a list of nested dictionaries in python

我是 python 的新手,目前我一直在编写热图来比较不同语言的词向量。

我的数据是这样的:

data = [{'de':  {'de': [[1]], 'es': [[0.9644323]], 'fr': [[0.9419257]], 'hu': [[0.9297902]]}},
        {'fr':   {'fr': [[1]], 'de': [[0.9419257]], 'es': [[0.9382719]], 'hu': [[0.91247433]]}},
        {'hu':  {'hu': [[1]], 'de': [[0.9419257]], 'es': [[0.9382719]], 'fr': [[0.91247433]]}}]

数据显示了一种语言的短语与其翻译之间的相似性(例如,在第一本词典中,我有一个德语短语与 ES、HU 和 FR 翻译进行比较)。我想为这个嵌套词典列表创建一个热图。如何在热图中可视化它?我试着在 seaborn 中查看热图,但我的字典是嵌套的,这让我感到困惑。

如果解决得快。您首先将带有字典的列表转换为数据框,然后使用 seaborn 的热图对其进行绘制。不过,我相信会有更优雅的解决方案。

import pandas as pd
import seaborn as sns
%matplotlib inline

frames = []

for d in data:
    frames.append(pd.DataFrame.from_dict(d, orient='index'))

res = pd.concat(frames)
res = res.applymap(lambda x: x[0][0])
sns.heatmap(res, annot=True)